(如何)我可以提供自定义类来在Wicket中设置页面?

时间:2011-07-20 15:29:42

标签: wicket

我想改变Wicket为URL子集实例化Page实例的方式。通常,我会将一个类映射到一个带有mount()的URL,在这种情况下,Wicket会选择该类中的一个可用构造函数并实例化它。

我的应用程序的一部分是简单的CRUD操作,它们在不同的实体类型之间有很多共同点。我已经将常见的方面考虑到了一些工厂和辅助类中,现在我的页面层次结构如下:

                          TemplatePage
                               | 
                       AbstractEntityPage
              |                                 |
      AbstractVenuePage                 AbstractEventPage
      |                |                |                |
ViewVenuePage    EditVenuePage    ViewEventPage    EditEventPage

我想削减最后两个级别,因为随着更多实体类型的添加,层次结构开始蔓延,并且这些类中剩下的代码很少,可以很容易地将它们分解为更通用的对象。

AbstractEntityPage转换为类EntityPage非常容易,可以根据需要将特定组件插入到位。我通常会使用Builder来执行此操作,但我不确定如何告诉Wicket使用它?我在API文档中找不到这个钩子。

2 个答案:

答案 0 :(得分:1)

你可以使用EntityPage并在你的面板中实现差异,但是你需要很多类似的面板(或者如果他们没有真正不同的话,需要一些通用的面板)。或者你可以看一下像wicketopia这样的wicket快速原型库之一。我不认为他们中的任何一个(我发现和测试过的)都可以投入生产,但是他们可以通过 g 来挽救它们。

答案 1 :(得分:1)

您可以使用org.apache.wicket.settings.ISessionSettings.setPageFactory(IPageFactory)替换默认的IPageFactory,并使用不同的实例化页面策略(如果它是特殊的。)