chapter06_渲染Web视图_3_使用Apache Tiles视图定义布局

  • 需求:为所有的页面定义一个通用的头部和底部(例如copyright)

    方法:使用布局引擎Apache Tiles,Spring提供视图解析器TilesViewResolver用于支持Apache Tiles

  • 配置Tiles视图解析器

    (1) 需要添加几个Bean

    示例

    WebConfig.java

      @Configuration
      @EnableWebMvc
      @ComponentScan("spittr.web")
      public class WebConfig extends WebMvcConfigurerAdapter {
    
          ...
    
          // Tiles
          @Bean
          public TilesConfigurer tilesConfigurer() {
    
              TilesConfigurer tiles = new TilesConfigurer();
    
              // tiles.setDefinitions(new String"/WEB-INF/layout/tiles.xml");
              tiles.setDefinitions("/WEB-INF/**/tiles.xml");
    
              tiles.setCheckRefresh(true);
      
              return tiles;
          }
    
          @Bean
          public ViewResolver viewResolver() {
    
              return new TilesViewResolver();
          }
    
          ...
      }
    

    设置TilesViewResolver很简单;设置TilesConfigurer最重要的是 setDifinitions方法,用于查找tiles.xml,可以使用通配符,"/WEB-INF//tiles.xml"代表查找WEB-INF目录下所有名字为tiles.xml的文件

    (2) xml配置详见 P186

  • tiles.xml

    (1) 示例

      
      
    
      
    
          
              
              
          
    
          
              
          
    
          
              
          
    
          
              
          
    
          
              
          
    
          
              
          
    
      
    

    (2) 每个定义一个tile,指向一个JSP模板;里面的元素和JSP文件的的name属性对应

    (3) 在示例中,除了base以外,其余的JSP模板都extends于base

    (4) page.jsp

      <%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
      <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="t" %>
      <%@ page session="false" %>
    
      
          
              Spittr
              " >
          
          
              
       
              

    (5) body 部分由各个模板自己设置,所有的模板都继承于base,所以他们的header和footer都是一样的

你可能感兴趣的:(chapter06_渲染Web视图_3_使用Apache Tiles视图定义布局)