【问题标题】:Wicket and Reusable Link检票口和可重复使用的链接
【发布时间】:2013-07-24 17:47:15
【问题描述】:

正在尝试创建一个可重用的链接类来扩展链接。我有一个包含大约 7 个菜单项的网页,并且我正在为我的应用程序使用继承。我想创建一个可重用的链接类来缩短我的代码长度..

到目前为止,当我在 oninitialize() 中添加(new Link....)作为匿名类时,链接创建并运行良好。

当我硬编码要转到的新页面的实例并将其分配给“页面”引用,然后将其传递给 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);  
   }   
}

【问题讨论】:

    标签: hyperlink wicket


    【解决方案1】:

    这可能是因为在第一个版本中,您在调用 Link 对象的 onClick 方法时创建了 Page 对象,而在第二个版本中,Page 对象是在 Page-construction(更早的方式)上创建的。

    如果您将响应页面的 Pageclass 传递给实例,则可能会得到结果。

    这些的组件特性设置器

    public final <C extends IRequestablePage> void setResponsePage(java.lang.Class<C> cls, PageParameters parameters)
    

    或不带参数。

    public final <C extends IRequestablePage> void setResponsePage(java.lang.Class<C> cls)
    

    更多信息请参见Javadoc

    【讨论】:

      【解决方案2】:

      我最终做了:

      public class CustomLinkToNewPage<T extends SSAPage> extends Link
      

      SSAPage 是我扩展 WebPage 的基本页面...所以传入此类的构造函数的任何对象也必须扩展 SSAPage。

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

      然后我传入对象的 .class 引用,并使用反射创建对象的新实例。然后将该实例设置为 Page,并将其传递给我的 onClick 中的 setResponsePage。工作得很好,因为我不知道如何按照 Nicktar 的方式去做。所以这是一个替代方案,以防其他人遇到这个问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-14
        • 1970-01-01
        • 2017-07-23
        • 1970-01-01
        相关资源
        最近更新 更多