Spring实战(第四版)读书笔记18——Apache Tiles视图定义布局

1、配置Tiles视图解析器

为了在Spring中使用Tiles,需要一个TilesConfigurer bean(负责定位和加载Tile定义并协调生成Tiles)和一个TilesViewResolver bean(将逻辑视图名称解析为Tile定义)。

配置TilesConfigurer来解析定义(java方式):

@Bean
public TilesConfigurer tilesConfigurer(){
    TilesConfigurer tiles = new TilesConfigurer();
    tiles.setDefinitions(new String[]{
        "/WEB-INF/layout/tiles.xml"
    });
    tiles.setCheckRefresh(true);
    return tiles;
}

配置TilesViewResolver(java方式):

@Bean
public ViewResolver viewResolver(){
    return new TilesViewResolver;
}

XML方式配置TilesConfigurer和TilesViewResolver:

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

<bean id="viewResolver" class="org.spring framework.web.servlet.view.tiles3.TilesViewResolver" />

2、定义Tiles

例子:

<tiles-definitions>
    <definition name="base"
                template="WEB-INF/layout/page.jsp">
        <put-attribute name="header"
                   value="/WEB-INF/layout/header.jsp" />
        <put-attribute name="footer"
                   value="/WEB-INF/layout/footer.jsp" />
    </definition>

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

每个<definition>元素都定义一个tile,它最终引用的是一个JSP模板。

page.jsp:

<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="t" %>
<%@ page session="false" %>
<html>
    <head>
        <title>Spittr</title>
        <link rel="stylesheet"
              type="text/css"
              href="<s:url value="/resources/style.css" />" >
    </head>
    <body>
        <div id="header">
            <t:insertAttribute name="header" />
        </div>

        <div id="content">
            <t:insertAttribute name="body" />
        </div>

        <div id="footer">
            <t:insertAttribute name="footer" />
        </div>
    </body>
</html>

注意继承和扩展关系,header和footer也可以被覆盖。

猜你喜欢

转载自blog.csdn.net/Nemoosi/article/details/107430302