平铺仅刷新正文内容

时间:2016-10-20 04:47:58

标签: java apache-tiles tiles-3

我有apache Tiles布局页面有Header,Menu,Body。在此布局重新加载整个布局是令人耳目一新的。我想要标题,菜单是静态的,只有正文部分才能刷新。

(1)write this tiles configuration into spring xml file.
    <bean id="viewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver"/>

        <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
            <property name="definitions">
                <list>
                    <value>/WEB-INF/layouts/layouts.xml</value>
                    <value>/WEB-INF/layouts/views.xml</value>
                </list>
            </property>
        </bean>

(2)layouts.xml file 
<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE tiles-definitions PUBLIC  
        "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"  
        "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>

    <definition name="DefaultTemplate" template="/WEB-INF/views/template/SiteTemplate.jsp">
        <put-attribute name="title"     value="Home" />
        <put-attribute name="header"    value="/WEB-INF/views/template/header.jsp" />
        <put-attribute name="menu"      value="/WEB-INF/views/template/menu.jsp" />
        <put-attribute name="body"      value="" />
        <put-attribute name="footer"    value="/WEB-INF/views/template/footer.jsp" />
    </definition>

</tiles-definitions>

(3)views.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
    "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
    "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>

    <definition name="index" extends="DefaultTemplate">
        <put-attribute name="body"  value="/WEB-INF/views/index.jsp" />
    </definition>

    <definition name="personList" extends="DefaultTemplate">
        <put-attribute name="body"  value="/WEB-INF/views/personList.jsp" />
    </definition>

</tiles-definitions>

(4)SiteTemplate.jsp

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Spring MVC - Tiles Integration tutorial</title>
        <link rel="stylesheet" href="resources/css/screen.css" type="text/css" media="screen, projection"></link>
        <link rel="stylesheet" href="resources/css/print.css" type="text/css" media="print"></link>
        <!--[if IE]>
        <link rel="stylesheet" href="resources/css/ie.css" type="text/css" media="screen, projection">
        <![endif]-->
    <style>
    body{ margin-top:20px; margin-bottom:20px; background-color:#DFDFDF;}
    </style>
    </head>
    <body>
        <div class="container" style="border: #C1C1C1 solid 1px; border-radius:10px;">
            <!-- Header -->
            <tiles:insertAttribute name="header" />
            <!-- Menu Page -->
            <div class="span-5  border" style="height:400px;background-color:#FCFCFC;">
                <tiles:insertAttribute name="menu" />
            </div>
            <!-- Body Page -->
            <div class="span-19 last">
                <tiles:insertAttribute name="body" />
            </div>
            <!-- Footer Page -->
            <tiles:insertAttribute name="footer" />
        </div>
    </body>
    </html>

(5)menu.jsp

    <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
    <ul style="list-style:none;line-height:28px;">

        <li><spring:url value="/index" var="homeUrl" htmlEscape="true" />
            <a href="${homeUrl}">Home</a>
        </li>

        <li><spring:url value="/viewPeson" var="personListUrl" htmlEscape="true" />
            <a href="${personListUrl}">Person List</a>
        </li>

    </ul>

(6)same as write footer.jsp and header.jsp for your requirement.

(7)code for controlller

    @RequestMapping(value="index")
        public String index() {
            return "index";
        }

有没有办法阻止刷新标题,菜单和更新菜单上的Body内容点击哪些可以使用Apache Tiles 3实现?

2 个答案:

答案 0 :(得分:0)

在tiles.xml中,您可以创建多个布局定义。如果您需要更改主体,可以创建基本布局。可以创建第二个布局,然后扩展基本布局并进行所需的任何更新。在这种情况下,您的标题,标题,菜单和页脚将是相同的,但正文将是不同的。您可以这样编写布局:

<definition name="DefaultTemplate" template="/WEB-INF/views/template/SiteTemplate.jsp">
        <put-attribute name="title"     value="Home" />
        <put-attribute name="header"    value="/WEB-INF/views/template/header.jsp" />
            <put-attribute name="menu"      value="/WEB-INF/views/template/menu.jsp" />
            <put-attribute name="body"      value="" />
            <put-attribute name="footer"    value="/WEB-INF/views/template/footer.jsp" />
</definition>

<defintion name="SecondaryTemplate" extends="DefaultTemplate">
   <put-attribute name="body" value="location_of_your_jsp"/>
</defintion>

第二个模板,扩展您的第一个模板,保留第一个模板中的所有属性,但使用您要为该特定页面引用的jsp更新body属性。

答案 1 :(得分:0)

<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
        <property name="definitions">
            <list>
                <value>/WEB-INF/layouts/layouts.xml</value>
                <value>/WEB-INF/layouts/views.xml</value>
            </list>
        </property>
        <property name="checkRefresh" value="true" />
    </bean>

在配置图块时使用 checkrefresh 属性。

这将首先加载所有碎片,然后再从内存缓存/磁盘缓存中加载它们。

您可以使用检查元素对此进行检查

但是这里的页眉或页脚仍然不是静态的,而是从缓存中加载的