【发布时间】:2012-07-13 06:26:11
【问题描述】:
问题:我有两个相同的页面home.jsp 和contact.jsp 具有相同的结构。它们仅在正文内容和标题上有所不同。我想使用tiles 框架创建一个布局页面并重用两个JSPs 的代码。控制器框架尚未确定,可能是Spring MVC 3或Struts 2。
解决方案 A: 直接从控制器/动作类调用 JSP 文件/视图。
我在tiles.xml 中写了一个定义,比如:
<definition name="baseLayout" template="/WEB-INF/jsp/layout/baseLayout.jsp">
<put-attribute name="title" value="" />
<put-attribute name="header" value="/WEB-INF/jsp/includes/header.jsp"/>
<put-attribute name="body" value="" />
</definition>
现在在baseLayout.jsp:
<html>
<head><title><tiles:insertAttribute name="title"/></title></head>
<body>
<div class="wrapper">
<div class="header"><tiles:insertAttribute name="header"/></div>
<div class="body"><tiles:insertAttribute name="body"/></div>
</div>
</body>
</html>
现在在home.jsp
<tiles:insertDefinition name="baseLayout">
<tiles:putAttribute name="title">
Title for home page
</tiles:putAttribute>
<tiles:putAttribute name="body">
Content for home page
</tiles:putAttribute>
</tiles:insertDefinition>
contact.jsp 类似:
<tiles:insertDefinition name="baseLayout">
<tiles:putAttribute name="title">
Title for contact page
</tiles:putAttribute>
<tiles:putAttribute name="body">
Content for contact page
</tiles:putAttribute>
</tiles:insertDefinition>
解决方案 B: 从 cotrollers/action 类调用不同 JSP 文件的 tiles definition。对于我要编写的每个JSP 文件,这种方法需要一个tiles definition。所以总共有 3 个图块定义(一个用于 baseLayout,另外两个用于 home 和 contact)。
tiles.xml:
<definition name="baseLayout" template="/WEB-INF/jsp/layout/baseLayout.jsp">
<put-attribute name="title" value="" />
<put-attribute name="header" value="/WEB-INF/jsp/includes/header.jsp"/>
<put-attribute name="body" value="" />
</definition>
<definition name="home" extends="baseLayout">
<put-attribute name="title" value="Title for home page" />
<put-attribute name="header" value="/WEB-INF/jsp/home.jsp"/>
</definition>
<definition name="contact" extends="baseLayout">
<put-attribute name="title" value="Title for contact page" />
<put-attribute name="header" value="/WEB-INF/jsp/contact.jsp"/>
</definition>
baseLayout.jsp:Same as **Solution A**
home.jsp:Content for home page
contact.jsp:Content for contact page
我想就我应该坚持上述哪种方法提出建议。
【问题讨论】:
标签: java jsp spring-mvc struts2 tiles