2016-02-11 71 views
1

我想使用Apache Wicket实现以下功能。一个URL,可以根据数据库内容显示两个Wicket页面中的一个

我们要求URL/xxxx可以显示以下两种情况之一。

  • 如果在“城市”表(列“url_name”)中有条目,那么我们应该显示CityDetailPage。
  • 如果“场地”表(列“url_name”)中有条目,那么我们应该显示VenueDetailPage。

这些是相当不同的页面,有数百行不同的检票组件等等。

目前我们有两个不同的URL(/ city/xxx和/ venue/xxx),它们被映射到应用程序中,并且工作正常。现在他们应该共享一个URL。

我需要有一些类似的逻辑,如“从url选择城市,其中url_name =?”如果有一行显示CityDetailPage,否则如果“从URL中选择ID从哪里url_name =?”然后VenueDetailPage,否则404

事情我已经考虑:

  • 有两个部分,它们显示/隐藏基于什么发现一个巨大的页面。但这很不雅,基本上这是两个不同的页面。
  • 有一个Servlet查看路径并执行数据库查询,然后进行内部重定向(我们在我们的Servlet引擎前有Apache)。也感觉不雅,它在门外。
  • 也许某些页面除了显示另一个页面(但不会改变URL)的某种类型的wicket异常外,没有确定要使用哪种类型?

在此先感谢!我很卡:(

+0

如何创建面板为每个案件和在你的页面可以选择只渲染其中的一个? – mwe

回答

4

我建议你使用自定义IProvider,即代替mountPage("the/path", VenuePage.class)mount(new MountedMapper("the/path", new MyClassProvider())),其中MyClassProvider实现IProvider#get()根据您的情况返回不同的页面类。

相关问题