2013-07-25 33 views
1

试图创建一个可扩展链接的可重用链接类。我有一个约7个菜单项的网页,我正在为我的应用程序使用继承。我想创建一个可重用的链接类来缩短我的代码长度。Wicket和Reusable Link

截至目前,当我在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); 
    } 
} 
+1

显示一些代码... –

回答

0

我落得这样做:

public class CustomLinkToNewPage<T extends SSAPage> extends Link 

SSAPage是延伸好康我的基地页......所以在传递给这个类的构造函数中的任何对象必须扩展SSAPage为好。

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

然后我在的.class参考传递给对象,并使用反射..然后设置实例页面创建的对象的新实例,并通过它在我的onClick到setResponsePage。很好地工作,因为我无法弄清楚如何做到尼克塔的方式。所以如果有其他人遇到这个问题,这是另一种选择。

0

这可能是由于这样的事实:在你的第一个版本箱子Page对象时,链接对象的onclick方法被调用,并在第二个版本,上创建Page对象(先前的方式)。

如果您在实例上传递响应页的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

+0

我最终做了: – eaglei22