通过我的网站,所有jsp页面都包含bodyHeader.jsp。我必须查询db以填充bodyHeader.jsp上的一些字段。我在我的控制器中映射了头jsp,我不希望在每个页面上触发此方法。那么这个方法不会被调用,我缺少什么?
非常jsp:
<jsp:include page="/fragments/bodyHeader.jsp"/>
在控制器中:
@RequestMapping(value = "/fragments/bodyHeader", method = RequestMethod.GET)
public void getCategoryList(Model aaModel) {
aaModel.addAttribute("categories", this.caService.findCategoryByLevel(0));
}
答案 0 :(得分:2)
为了构建页面布局,我建议使用Apache Tiles。页面将在运行时从片段组装。
要使用Apache Tiles,您可以将TilesViewResolver
添加为Spring组件:
...
<bean class="org.springframework.web.servlet.view.tiles2.TilesViewResolver">
...
以及TilesConfigurer
:
<bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property>
<list>
<value>/WEB-INF/views/**/views.xml</value>
</list>
</property>
</bean>
平铺模板views.xml
:
...
<tiles-definition>
<definition name="template" template="/WEB_INF/views/common_template.jsp">
<put-attribute name="header" value="/WEB_INF/views/tiles/header.jsp"/>
<put-attribute name="side" value="/WEB_INF/views/tiles/side.jsp"/>
...
</definition>
<definition name="main" extends="template">
<put-attribute name="content" value="/WEB-INF/views/main.jsp"/>
</definition>
</tiles-definition>
另见: