一个URL,可以根据数据库内容显示两个Wicket页面之一

时间:2016-02-11 20:01:45

标签: wicket wicket-6 wicket-1.6

我想使用Apache Wicket实现以下功能。

我们要求URL / xxxx可以显示两件事之一。

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

这些是完全不同的页面,有数百行不同的wicket组件,依此类推。

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

我需要有某种逻辑,例如“从城市中选择id,其中url_name =?”如果有一行显示CityDetailPage,否则如果“从场所选择id url_name =?”然后是VenueDetailPage,否则是404。

我考虑过的事情:

  • 有一个巨大的页面,其中有两个部分根据找到的内容可见/不可见。但这非常不优雅,这些基本上是两个不同的页面。
  • 有一个Servlet,它查看路径并进行db查询,然后进行内部重定向(我们在Servlet引擎前面有Apache)。也感觉不优雅,它在外面的检票口。
  • 也许有些页面除了显示另一个页面(但不会改变URL)的某种wicket异常之外什么都不做,不确定使用哪种类型?

提前致谢!我很困惑:(

1 个答案:

答案 0 :(得分:4)

我建议使用自定义IProvider,即代替mountPage("the/path", VenuePage.class)执行mount(new MountedMapper("the/path", new MyClassProvider())),其中MyClassProvider实现IProvider并在#get()中返回不同的网页类{1}}取决于您的条件。