問題:我有兩個相同的頁面home.jsp
和contact.jsp
具有相同的結構。它們僅在正文內容和標題上有所不同。我想使用tiles
框架創建佈局頁面,並重用兩個JSP
的代碼。控制器框架尚未確定,它可能是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:調用的不同JSP
文件tiles definition
從cotrollers /動作類。這種方法需要一個tiles definition
我將寫的每個JSP
文件。所以總共有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
我想上的建議上述方法之一我應該勾選即可。