0

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

瓦片定义如下:

<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作为视图,但我不想向控制器添加代码,我想尽可能简单地执行此操作。

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

这是一些旧代码,所以不幸的是我无法承受太大的变化。

在此先感谢康拉德

4

1 回答 1

1

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

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

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

希望能帮助到你

于 2010-09-16T15:31:11.380 回答