根据请求参数(Spring Framework& tiles)渲染不同的tile

时间:2010-04-09 12:25:50

标签: java spring spring-mvc tiles

我需要根据某些请求参数更改某些现有应用程序以呈现不同的视图。此应用程序使用瓷砖。我以前从未使用过瓷砖,需要一些提示如何去做。

Tiles的定义如下:

<bean id="viewResolver"class="org.springframework.web.servlet.view.UrlBasedViewResolver"><property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" /></bean>

假设我有 welcome.tile ,如果请求中有一些参数,例如。 id = xyz 和tile xyz.welcome.tile 存在我想渲染这个,如果它不存在,我想呈现默认值。我的控制器返回 welcome.tile 作为视图,但我不想向控制器添加代码,我想尽可能简单地执行此操作。

我的想法是以某种方式拦截视图分辨率,因此它将根据请求检查参数,然后验证是否存在带参数前缀的给定tile,如果存在则将使用它。但我不知道从哪里开始。

这是一些旧代码,所以很遗憾我无法承受太多变化。

提前致谢 康拉德

1 个答案:

答案 0 :(得分:1)

我认为您可以使用读取您的愿望的请求参数的版本来扩展UrlBasedViewResolver,并使用此信息构建视图名称。知道ViewResolver接口没有提供HttpRequest的实例,您可以使用org.springframework.web.util.RequestHolder.currentRequest()静态方法获取它。

这样,如果您请求的是(例如)/mvc/dailyReport/criticalStuff, viewName可以是dailyReport.criticalStuff

如果您请求的是/mvc/dailyReport/criticalStuff?printable, viewName可以解析为dailyReport.criticalStuff.printable,这是dailyReport.criticalStuff视图的可打印版本。

希望有所帮助