Spring:在运行时选择自定义视图的最佳方式

时间:2012-05-01 09:24:51

标签: spring-mvc view customization modelandview

我希望借用某人的大脑(和经验)来找出实现以下目标的最佳方式。

我目前正在开发一个将被许多客户使用的应用程序,并且需要根据每个客户的要求进行UI自定义。虽然底层的java代码和业务逻辑是相同的,但在运行时我想弄清楚(通过某些属性)应用程序运行的客户端,从而选择相应的视图并显示网页。

目前,我所能想到的是创建一个自定义ViewResolver(扩展InternalResourceViewResolver),它将读取客户端名称属性并使用它来解析视图(例如:WEB-INF / jsp // account / myAccount.jsp)如果客户端属性不存在,则默认为另一个视图(例如:WEB-INF / jsp / default / account / myAccount.jsp)。

我在这里看到的问题是我可能不想覆盖应该呈现默认视图的特定客户端的所有JSP。这将需要I / O调用来检查客户端文件夹中是否存在JSP文件,然后再恢复为默认值。为了对抗I / O,我甚至可以在应用程序启动时创建一个覆盖JSP的Map,但这需要在添加新的自定义JSP时重新启动应用程序,这可以通过公开一些服务来刷新此Map来处理。

那你们觉得怎么样?此外,它将如何影响重定向?如果您需要有关我们的设置或要求的任何进一步信息,请告知我们。

的问候,
萨米特

2 个答案:

答案 0 :(得分:0)

您可以使用切片来控制视图的渲染,它有一个与spring捆绑在一起的默认视图解析器,您可以扩展它。

定义自定义布局,扩展它们并在需要其他行为时进行更改。

http://tiles.apache.org/

答案 1 :(得分:0)

在等待更多意见/建议之后,正如JB建议的那样,按照问题本身的描述使用我自己的解决方案。

感谢大家的帮助。