我有以下的tiles配置文件
<tiles-definitions>
<definition name="base" template="/includes/layout.jsp">
<put-attribute name="header" value="/includes/header.jsp" />
<put-attribute name="menu" value="/includes/menu.jsp" />
<put-attribute name="footer" value="/includes/footer.jsp" />
</definition>
<definition name="home" extends="base">
<put-attribute name="contentBody" value="/home/view.jsp" />
</definition>
</tiles-definitions>为了显示"view.jsp“页面,我有另一个名为"home.jsp”的页面,它有以下代码(仅)
//home.jsp .
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<tiles:insertDefinition name="home" />这里的问题是,如果我想用相同的布局加载"edit.jsp“页面,我需要在tiles.xml中重复这个部分
<definition name="editbase" extends="base">
<put-attribute name="contentBody" value="/home/edit.jsp" />
</definition>并创建一个名为"editbase.jsp“的文件并调用它。(重复上述代码)
我只是想知道这是正确的方式还是我能做的事
<tiles-definitions>
<definition name="base" template="/includes/layout.jsp">
<put-attribute name="header" value="/includes/header.jsp" />
<put-attribute name="menu" value="/includes/menu.jsp" />
<put-attribute name="footer" value="/includes/footer.jsp" />
</definition>
<definition name="home" extends="base">
<put-attribute name="contentBody" value="/home/view.jsp" />
<put-attribute name="contentBody" value="/home/edit.jsp" />
</definition>
</tiles-definitions> 并相应地加载页面。我想我的问题很清楚
我正在使用apache 2.2.2
提前感谢
干杯
萨梅拉
发布于 2011-04-04 14:58:29
除非您有许多不同的页眉/页脚/菜单,否则可以简化/includes/layout.jsp将页眉、页脚和菜单代码直接放在其中。然后,使用<tiles:insert>插入实际页面内容:-
/includes/layout.jsp
<html>
<head>
...
</head>
<body>
<!-- put your header code here -->
...
<!-- put your menu code here -->
...
<tiles:insert attribute="contentBody" />
<!-- put your footer code here -->
...
</body>
</html>tiles-defs.xml
创建名为contentBody的属性。
<tiles-definitions>
<definition name="base" template="/includes/layout.jsp">
<!-- Create a contentBody with no value -->
<put name="contentBody" value="" />
</definition>
<definition name="view" extends="base">
<!-- Override base's contentBody -->
<put name="contentBody" value="/home/view.jsp" />
</definition>
<definition name="edit" extends="base">
<!-- Override base's contentBody -->
<put name="contentBody" value="/home/edit.jsp" />
</definition>
</tiles-definitions>您的JSP查看器文件将不会有任何tiles标记,因为将这些标记放在查看器中会使您的布局变得非常僵硬和侵入性……这就是你现在面临的问题。相反,只将实际内容放在查看器文件中。它们将由<tiles:insert>从布局文件中自动包含。
struts-config.xml
如果使用Struts,定义名称view和编辑必须匹配struts配置中的路径,例如:-
<action path="/bla" type="..." name="FrmReport" scope="request">
<!-- path "view" must match tiles definition name -->
<forward name="success" path="view"></forward>
</action>这样,在页面显示在屏幕上之前,瓷砖将自动装饰您的页面。
https://stackoverflow.com/questions/5537168
复制相似问题