2017-12-26 8 views
-1

私はstruts 1アプリケーションをストラット2に移植しています。 struts 1アプリケーションではから継承するCommonActionクラスがあります。
public class CommonAction extends DispatchAction struts2 ModelDrivenで囲まれたワイルドカードでエラーが発生する

CommonActionクラスも
public class ManageProfilesAction extends CommonAction

どちらのサブクラス ManageProfilesActionよう

CommonActionウェブからのリクエストを受け取るアクションメソッドを持っているなどのアプリケーション内の他のすべてのActionクラスのスーパークラスです。 ManageProfilesActionの場合、関連付けられたフォームBeanはManageProfilesFormですが、CommonActionCommonFormという名前のフォームBeanを持ちます。 ManageProfilesAction等両方CommonActionとそのサブクラスは、関連するモデル/フォームと共にウェブ要求を受信する方法を持つことができるように
次に支柱2のアプローチを用いて、Iは

public class CommonAction implements ServletRequestAware, ModelDriven<? extends CommonForm> { 
    protected CommonForm form = new CommonForm(); 
    @Override 
    public CommonForm getModel() { 
    return form; 
    } 
} 

public class ManageProfilesAction extends CommonAction { 
    private ManageProfilesForm form = new ManageProfilesForm(); 
    @Override 
    public ManageProfilesForm getModel() { 
    return form; 
    } 
} 

よう CommonActionManageProfilesActionを宣言し、それぞれCommonFormとManageProfilesFormです。しかし、私は、コンパイラエラーを
を取得しています:
public class CommonAction implements ServletRequestAware, ModelDriven<? extends CommonForm> { required: class or interface without bounds found: ? extends CommonForm

は、いくつかのJavaジェネリックの魔法と、それは何らかの形で実行可能ですか私は徹底的に設計を変更する必要がありますか?

答えて

0

にこれについての詳細を読むことができます。

0

インターフェイスModelDrivenには、クラスまたはインターフェイスの宣言が必要です。境界のあるワイルドカードは、インターフェイスを実装することによって使用できません。

public class CommonAction implements ServletRequestAware, ModelDriven<CommonForm> { 
    protected CommonForm commonForm = new CommonForm(); 
    @Override 
    public CommonForm getModel() { 
    return commonForm; 
    } 
} 

public class ManageProfilesAction extends CommonAction { 
    private ManageProfilesForm profForm = new ManageProfilesForm(); 
    @Override 
    public ManageProfilesForm getModel() { 
    return profForm; 
    } 
} 

勿論、ManageProfilesFormはCommonFormから継承:

あなたは私のようにCommonFormとManageProfilesFormの両方を使用するために管理Java tutorial.

関連する問題