我在一个新的Spring MVC 3应用程序中使用Tiles 2。 这是我的模板
<definition name="baseLayout" template="/WEB-INF/jsp/layout/layout.jsp" >
<put-attribute name="title" value="" />
<put-attribute name="header" value="/WEB-INF/jsp/layout/header.jsp" />
<put-attribute name="body" value="" />
<put-attribute name="userInfo" value="" />
<put-attribute name="footer" value="/WEB-INF/jsp/layout/footer.jsp" />
</definition>
和我的页面
<definition name="engageStep1View" extends="baseLayout" >
<put-attribute name="title" value="" />
<put-attribute name="body" value="/WEB-INF/jsp/private/engageStep1.jsp" />
<put-attribute name="userInfo" value="/layout/userInfo" />
</definition>
我在tiles.xml定义中添加了下一行
<definition name="userInfoView" template="/WEB-INF/jsp/layout/userInfo.jsp" />
更好的想法是对控制器进行enagageStep1调用:
@RequestMapping(value = "/layout/userInfo")
public ModelAndView handleRequest(ModelMap model) {
......
MemberPrincipal memberPrincipal = (MemberPrincipal)authentication.getPrincipal();
model.put("userName", memberPrincipal.getUserName());
return new ModelAndView("userInfoView", "model", model);
}
有什么想法吗?
由于
答案 0 :(得分:0)
看起来您的userInfo控制器方法提供的信息可能适用于您的整个应用/网站。对于这种信息,您可以使用spring拦截器来填充当前属性上下文中所需的信息。然后userInfoView可以根据需要使用此信息,而无需引用userInfo控制器方法。
另一种类似的方法是使用tile视图preparer。