我想改变Wicket为URL子集实例化Page
实例的方式。通常,我会将一个类映射到一个带有mount()
的URL,在这种情况下,Wicket会选择该类中的一个可用构造函数并实例化它。
我的应用程序的一部分是简单的CRUD操作,它们在不同的实体类型之间有很多共同点。我已经将常见的方面考虑到了一些工厂和辅助类中,现在我的页面层次结构如下:
TemplatePage | AbstractEntityPage | | AbstractVenuePage AbstractEventPage | | | | ViewVenuePage EditVenuePage ViewEventPage EditEventPage
我想削减最后两个级别,因为随着更多实体类型的添加,层次结构开始蔓延,并且这些类中剩下的代码很少,可以很容易地将它们分解为更通用的对象。
将AbstractEntityPage
转换为类EntityPage
非常容易,可以根据需要将特定组件插入到位。我通常会使用Builder来执行此操作,但我不确定如何告诉Wicket使用它?我在API文档中找不到这个钩子。
答案 0 :(得分:1)
你可以使用EntityPage并在你的面板中实现差异,但是你需要很多类似的面板(或者如果他们没有真正不同的话,需要一些通用的面板)。或者你可以看一下像wicketopia这样的wicket快速原型库之一。我不认为他们中的任何一个(我发现和测试过的)都可以投入生产,但是他们可以通过 g 来挽救它们。
答案 1 :(得分:1)
您可以使用org.apache.wicket.settings.ISessionSettings.setPageFactory(IPageFactory)替换默认的IPageFactory,并使用不同的实例化页面策略(如果它是特殊的。)