1

Link を拡張する再利用可能なリンク クラスを作成しようとしています。約 7 つのメニュー項目を含む Web ページがあり、アプリケーションに継承を使用しています。コードの長さを短くするために、再利用可能なリンク クラスを作成したいと考えています。

今のところ、oninitialize() 内の匿名クラスとして (new Link....) を追加すると、リンクが作成され、正常に実行されます。

カスタム リンク クラス (ベース ページの内部クラス) は、移動する新しいページのインスタンスをハード コードし、それを "Page" 参照に割り当ててから setResponsePage(); に渡すと正常に機能します。

問題は、一般的にコンストラクターを介してオブジェクトを渡すことができるようにしようとしているということです。コンストラクターに渡して新しいページに移動しようとすると、セッションが期限切れになります。

クラスのジェネリックを使用してみました。また、ページ参照をパラメーター値として宣言することも試みました。ある種のモデルを使用することになっていますか? または、誰かがこれを行う方法の例を提供できますか? このカスタム リンク クラスを使用して、それぞれ独自のクラスを持つ 7 つのメニュー項目に新しいリンクを追加できるようにしたいと考えています...

動作するコード:

add(new Link("userPageLink")
{
    public void onClick()
    {
        pageTitle = "User";
        Page next = new UserPage();
        setResponsePage(next);
    }
});

クリックするとページが期限切れになる変更されたコード:

public class CustomLinkToNewPage extends Link
{
   private String title;
   private Page next;

   public CustomLinkToNewPage(String id, String title, Page newPage) 
   {
      super(id);

      next = newPage; 
      this.title = title; 
   }

   @Override
   public void onClick() 
   {
      SSAPage.pageTitle = title;
      setResponsePage(next);  
   }   
}
4

2 に答える 2

0

私はやった:

public class CustomLinkToNewPage<T extends SSAPage> extends Link

SSAPage は、WebPage を拡張する私の基本ページです... したがって、このクラスのコンストラクターに渡されるすべてのオブジェクトは、SSAPage も拡張する必要があります。

public CustomLinkToNewPage(String id, Class<T> name) 

次に、オブジェクトへの .class 参照を渡し、リフレクションを使用してオブジェクトの新しいインスタンスを作成しました。次に、そのインスタンスを Page に設定し、それを onClick の setResponsePage に渡しました。Nicktar の方法を理解できなかったので、うまくいきました。したがって、これは、他の誰かがこの問題に遭遇した場合の代替手段です。

于 2013-08-09T14:08:10.513 に答える