我需要根据某些请求参数更改某些现有应用程序以呈现不同的视图。此应用程序使用瓷砖。我以前从未使用过瓷砖,需要一些提示如何去做。
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,如果存在则将使用它。但我不知道从哪里开始。
这是一些旧代码,所以很遗憾我无法承受太多变化。
提前致谢 康拉德
答案 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
视图的可打印版本。
希望有所帮助