使用Tiles,有没有办法将我的两个JSP减少为一个JSP?

问题描述 投票:0回答:1

我第一次使用Tiles。尝试在我的Spring MVC项目中布局我的JSP页面。

请看看我正在做什么,让我知道这是否是“正确”的方式......我的具体问题在底部......

我有这样的文件结构...文件夹/src/main/webapp/WEB-INF/layouts/包含...

standard.jsp

// ...
<html>
    <title><tiles:insertAttribute name="title"/></title>
// ... LOTS OF HTML ...
    <tiles:insertAttribute name="header"/>
    <tiles:insertAttribute name="body"/>
    <tiles:insertAttribute name="footer"/>
// ... LOTS OF HTML
</html>
// ...

tiles.xml

<tiles-definitions>
    <definition name="standardLayout" template="/WEB-INF/layouts/standard.jsp">
        <put-attribute name="title" value="My Directory" />
        <put-attribute name="header" value="/WEB-INF/layouts/header.jsp" />
        <put-attribute name="body" value="" />
        <put-attribute name="footer" value="" />
    </definition>
</tiles-definitions>

我的可查看的JSP位于文件夹/src/main/webapp/WEB-INF/views/中,其中包含...

tiles.xml

<tiles-definitions>
    <definition name="home" extends="standardLayout">
    </definition>
</tiles-definitions>

针对home.jsp

<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles"%>

<tiles:insertDefinition name="home">
    <tiles:putAttribute name = "body" value="/WEB-INF/views/home-body.jsp"/>
</tiles:insertDefinition>

家庭body.jsp

<div>
// LOTS OF HTML FOR THE BODY OF THE HOME PAGE
</div>

问题:我想只有一个home.jsp,但看起来我必须从单独的文件中提取正文内容(以及任何其他内容)。是否有适当的方法将home.jsphome-body.jsp简化为一个文件,或者我实际上是否正确地完成了这一操作?

tiles
1个回答
1
投票

你需要更新你的tiles.xml,standard.jsp和home.jsp,如下所示,

tiles.xml

<tiles-definitions>
    <definition name="home" extends="standardLayout">
       <put-attribute name="body" value="/WEB-INF/views/home.jsp"></put-attribute>
    </definition>        
</tiles-definitions>

standard.jsp

 <html>
   <title><tiles:insertAttribute name="title"/></title>
   <header>
       <tiles:insertAttribute name="header"/>
   </header>
   <body>
       <tiles:insertAttribute name="body"/>
   </body>
   <footer>
       <tiles:insertAttribute name="footer"/>
   </footer>
 </html>

针对home.jsp

<!-- Actual body content goes here.. -->    
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles"%>    
<p>The content of the home page.</p>
© www.soinside.com 2019 - 2024. All rights reserved.