`

Tiles2 用法简要介绍

阅读更多

 

项目地址:http://tiles.apache.org/

 

1. 配置

 

单独配置方案: 在 web.xml 中注册 tiles初始化servlet

 

<context-param>  
       <param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name>  
       <param-value>/WEB-INF/tiles-defs.xml</param-value>  
</context-param>  
 
<listener>  
	<listener-class>org.apache.tiles.web.startup.TilesListener</listener-class>  
</listener>
 

 

与 Spring MVC 集成配置方案:在 xxx-servlet.xml 中

 

<!-- 与模板框架 Tiles2 的集成 -->
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
	<property name="definitions">
		<list>
			<value>/WEB-INF/tiles/tiles-defs.xml</value>
		</list>
	</property>
</bean>

<!-- Tiles2 模板view解析 -->    
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
	<property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" />
</bean>
 

 

2. 使用方法

 

a. 定义模板页面 template.jsp

 

<%@ page contentType="text/html;charset=utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
 	<head>
 		<tiles:insertAttribute name="hrefBasepath"></tiles:insertAttribute>
		
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		
		<title><tiles:getAsString name="title"/></title>
		
		<!-- css -->
		<tiles:insertAttribute name="commonCss"></tiles:insertAttribute>	
		
		<!-- Javascripts -->
		<tiles:insertAttribute name="commonJs"></tiles:insertAttribute>
	</head>
  
	<body>
		<div id="body-wrapper"> <!-- Wrapper for the radial gradient background -->
			<tiles:insertAttribute name="menu"></tiles:insertAttribute>
			<tiles:insertAttribute name="body"></tiles:insertAttribute>
		</div>
	</body>
	
</html>
   

b. 在 tiles-defs.xml 中定义和配置模板

 

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

<tiles-definitions>

	<definition name="index" template="/WEB-INF/jsp/template/template.jsp">
		<put-attribute name="title" value="97 King Of Fight" />
		<put-attribute name="hrefBasepath" value="/WEB-INF/jsp/views/hrefBasepath.jsp" />
		<put-attribute name="commonCss" value="/WEB-INF/jsp/views/commonCss.jsp" />
		<put-attribute name="commonJs" value="/WEB-INF/jsp/views/commonJs.jsp" />
		<put-attribute name="menu" value="/WEB-INF/jsp/views/menu.jsp" />
		<put-attribute name="body" value="/WEB-INF/jsp/views/indexBody.jsp" />
	</definition>

</tiles-definitions>
 

 

同时指定 模板中的 <tiles:insertAttribute></tiles:insertAttribute> 标签所表示的网页片段的内容。

 

c. 在所有的jsp页面中,都可以通过 <tiles:insertDefinition> 标签类引入该模板的内容,例如下面的 index.jsp

 

<%@ page contentType="text/html;charset=utf-8"%>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>

<tiles:insertDefinition name="index"></tiles:insertDefinition>
 

 该页面,将会引入在 tiles-defs.xml 中注册的 名称为 "index" 的模板。该模板内容将以 template.jsp 为布局方案,同时按配置中指定的片段来替代 <tiles:insertAttribute> 标签,从而形成一个完整的页面。

 

d. 关于 tiles-defs.xml 中 <definition> 元素的部分使用方法

 

一个<definition>的定义中,可以通过<put-attribue>嵌套另一个<definition> ,也可以通过 extends 属性集成另一个<definition>

 

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

<tiles-definitions>

	<definition name="index.header" template="/WEB-INF/jsp/template/header.jsp">
		<put-attribute name="title" value="97 King Of Fight" />
		<put-attribute name="hrefBasepath" value="/WEB-INF/jsp/views/hrefBasepath.jsp" />
		<put-attribute name="commonCss" value="/WEB-INF/jsp/views/commonCss.jsp" />
		<put-attribute name="commonJs" value="/WEB-INF/jsp/views/commonJs.jsp" />
	</definition>

	<definition name="index" template="/WEB-INF/jsp/template/template.jsp">
		<!-- 通过 value=name 引用前面的 definition -->
		<put-attribute name="header" value="index.header"/>
		<put-attribute name="menu" value="/WEB-INF/jsp/views/menu.jsp" />
		<put-attribute name="body" value="/WEB-INF/jsp/views/indexBody.jsp" />
	</definition>

	<!-- 通过属性 extends=name 定义继承,只需修改有变化的部分 -->
	<definition name="welcome" extends="index">
		<put-attribute name="body" value="/WEB-INF/jsp/views/welcomeBody.jsp" />
	</definition>

</tiles-definitions>
 

 

  通过测试发现:如果上面的继承部分写成这样

 

<!-- 通过属性 extends=name 定义继承,只需修改有变化的部分 -->
<definition name="welcome" extends="index">
	<!-- title 属性是不会被覆盖的 -->
	<put-attribute name="title" value="Welcome" />
	<put-attribute name="body" value="/WEB-INF/jsp/views/welcomeBody.jsp" />
</definition>
 

 因为继承的 index ,index 中没有 title 部分定义,只有header, 而 title 在 header 中, 故不能覆盖 title , 而只可以直接覆盖 header

 

可以用 匿名定义 的方法,来使用 嵌套 定义

 

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

<tiles-definitions>
	
	<definition name="index" template="/WEB-INF/jsp/template/template.jsp">
		<put-attribute name="header">
			<definition template="/WEB-INF/jsp/template/header.jsp">
				<put-attribute name="title" value="97 King Of Fight" />
				<put-attribute name="hrefBasepath" value="/WEB-INF/jsp/views/hrefBasepath.jsp" />
				<put-attribute name="commonCss" value="/WEB-INF/jsp/views/commonCss.jsp" />
				<put-attribute name="commonJs" value="/WEB-INF/jsp/views/commonJs.jsp" />
			</definition>
		</put-attribute>
		<put-attribute name="menu" value="/WEB-INF/jsp/views/menu.jsp" />
		<put-attribute name="body" value="/WEB-INF/jsp/views/indexBody.jsp" />
	</definition>

</tiles-definitions>
 

 

另一种继承方式:如果页面中只是布局发生改变,而需要引入的内容是一样的。

 

<definition name="indexLayout2" extends="index" template="/WEB-INF/jsp/template/layout2.jsp">
</definition>
 

 

动态定义模板

 

上面的方法都是在编辑 tiles-defs.xml 文件,是静态配置,需要重启服务,才能有效。

 

Tiles2 提供了在不许要重启服务,也不需要在 tiles-defs.xml 配置就能动态生成模板的方法。

 

那就是直接在 jsp 页面中,使用 tiles 标签,动态定义。

 

有两种方法可以实现, 插入一个匿名模板 和 定义一个模板

 

<%@ page contentType="text/html;charset=utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>

<!-- 在该位置动态插入一个匿名模板,不需在 xml 文件中配置,该方案可以在不重启服务的情况下,动态建立一个模板 -->
<tiles:insertTemplate template="/WEB-INF/jsp/template/template.jsp">
		<tiles:putAttribute name="header">
			<tiles:insertTemplate template="/WEB-INF/jsp/template/header.jsp">
				<tiles:putAttribute name="title" value="97 King Of Fight" />
				<tiles:putAttribute name="hrefBasepath" value="/WEB-INF/jsp/views/hrefBasepath.jsp" />
				<tiles:putAttribute name="commonCss" value="/WEB-INF/jsp/views/commonCss.jsp" />
				<tiles:putAttribute name="commonJs" value="/WEB-INF/jsp/views/commonJs.jsp" />
			</tiles:insertTemplate>
		</tiles:putAttribute>
		<tiles:putAttribute name="menu" value="/WEB-INF/jsp/views/menu.jsp" />
		<tiles:putAttribute name="body" value="/WEB-INF/jsp/views/indexBody.jsp" />
</tiles:insertTemplate>

 

<%@ page contentType="text/html;charset=utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>

<!-- 动态定义模板,不需要在 xml 文件中配置,该方案可以在不重启服务的情况下,动态定义一个模板 -->
<tiles:definition name="index3" template="/WEB-INF/jsp/template/template.jsp">
		<tiles:putAttribute name="header">
			<tiles:insertTemplate template="/WEB-INF/jsp/template/header.jsp">
				<tiles:putAttribute name="title" value="97 King Of Fight" />
				<tiles:putAttribute name="hrefBasepath" value="/WEB-INF/jsp/views/hrefBasepath.jsp" />
				<tiles:putAttribute name="commonCss" value="/WEB-INF/jsp/views/commonCss.jsp" />
				<tiles:putAttribute name="commonJs" value="/WEB-INF/jsp/views/commonJs.jsp" />
			</tiles:insertTemplate>
		</tiles:putAttribute>
		<tiles:putAttribute name="menu" value="/WEB-INF/jsp/views/menu.jsp" />
		<tiles:putAttribute name="body" value="/WEB-INF/jsp/views/indexBody.jsp" />
</tiles:definition>

<tiles:insertDefinition name="index3"></tiles:insertDefinition>
 

 

更详细的使用方法请参照官方文档 地址:http://tiles.apache.org/framework/tutorial/advanced/index.html

 

 

 

 

0
1
分享到:
评论

相关推荐

    springMVC + freemarker + apache tiles

    集成上面三大框架, 里面有解析Ibatis的简单用法。

    phaser-animated-tiles:一个向Phaser 3添加对动画拼贴的支持的插件

    Phaser 3 Animated Tiles插件 一个简单的插件,目的很简单:将动画切片的支持添加到从Tiled导出的Phaser 3(3.8.0+)中。 捆绑的示例可在此处实时获得: : 该平台示例中也使用了该插件: : 该插件基于...

    mbtiles2ungzpbf:一个非常简单的项目,可以将mbtiles文件转换为一组未压缩的pbf,以供本地服务

    一个非常简单的项目,可以将mbtiles文件转换为一组未压缩的pbf磁贴,以供本地使用。 安装 使用 : $ npm i mbtiles2ungzpbf -g 用法 $ mbtiles2ungzpbf -f tiles.mbtiles 您也可以使用dir选项指定输出目录(默认...

    Struts2 in action中文版

    8.1.1 页面上:如何使用自定义结果组件构建Struts 2 Ajax应用程序 171 8.1.2 实现JSON结果类型 173 8.2 常用的结果类型 180 8.2.1 RequestDispatcher,也叫做dispatcher 180 8.2.2 ServletRedirectResult,也叫做...

    react-tiles:Tiles in react,一个窗口管理器组件,一次管理多个路由

    人们认为react-tiles使用起来很简单,因此只需将组件添加到应用程序的根组件中,即可将其变成多路由应用程序。 想要将其添加到您的项目中吗? 。正在开发中目前,该库非常有用,但仍处于测试阶段。 API可能会有很大...

    google-heat-tiles:Google 地图的热图图块

    用法和API 要使用 HeatTiles,您必须使用以下方法之一将其包含到您的项目中:标准脚本标签 &lt; script type =" text/javascript " src =" path/to/google-heat-tiles.js " &gt; &lt;/ script &gt;通用JS var ...

    深入浅出Struts2(附源码)

    5.1 Struts标签的使用方法 59 5.2 表单标签的共同属性 60 5.3 form标签 62 5.4 textfield、password、hidden标签 63 5.5 submit标签 65 5.6 reset标签 65 5.7 label标签 66 5.8 head标签 66 5.9 textarea...

    Tiled2UnityAutoImport:在修改或添加对 .tmx(平铺地图)文件的更改时自动运行 Tiled2Unity

    Tiled2UnityAutoImport与使用一个简单的编辑器脚本,允许 Tiled2Unity 自动处理 .tmx 平铺地图文件。用法: 在 Unity 项目中的某处添加Editor/目录下次在您的项目中添加/修改 .tmx 文件时,将打开首选项窗口调整您的...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    5.1 Struts标签的使用方法 59 5.2 表单标签的共同属性 60 5.3 form标签 62 5.4 textfield、password、hidden标签 63 5.5 submit标签 65 5.6 reset标签 65 5.7 label标签 66 5.8 head标签 66 5.9 textarea标签 66 ...

    Struts in Action[文字版][中文]

    本书的目的是帮助Web应用开发者能够最好的使用 Struts web 应用框架。 Struts是一个开源软件,有助于开发者更加快速和容易地建立Web应用程序。Struts依靠绝大多数开发者已熟知的标准技术—比如 JavaBeans, Java ...

    Spring API

    2.5.5. 对Tiles 2 支持 2.5.6. 对JSF 1.2支持 2.5.7. JAX-WS支持 2.6. 其他 2.6.1. 动态语言支持 2.6.2. 增强的测试支持 2.6.3. JMX 支持 2.6.4. 将Spring 应用程序上下文部署为JCA adapter 2.6.5. 计划任务...

    Spring中文帮助文档

    2.5.5. 对Tiles 2 支持 2.5.6. 对JSF 1.2支持 2.5.7. JAX-WS支持 2.6. 其他 2.6.1. 动态语言支持 2.6.2. 增强的测试支持 2.6.3. JMX 支持 2.6.4. 将Spring 应用程序上下文部署为JCA adapter 2.6.5. 计划任务...

    spring chm文档

    Spring Framework 开发参考手册 Rod Johnson Juergen Hoeller Alef Arendsen Colin Sampaleanu Rob Harrop Thomas Risberg Darren Davison Dmitriy Kopylenko Mark Pollack ...19.2. 使用Spring JMS ...

    3D游戏制作软件 8.0.zip

    2.上面第2行是具体的工作栏,鼠标指上去就会在屏幕下面出现名称以及简单实用方法,英语好的兄弟自己看吧 3.第二行右数第一个是人物初始位置,第3个树木,第一个道路(不是点上去就行了,而是点了后还要在右边的Model...

    Spring-Reference_zh_CN(Spring中文参考手册)

    1.2. 使用场景 2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@...

    RPG Builder 3D

    2.上面第2行是具体的工作栏,鼠标指上去就会在屏幕下面出现名称以及简单实用方法,英语好的兄弟自己看吧 3.第二行右数第一个是人物初始位置,第3个树木,第一个道路(不是点上去就行了,而是点了后还要在右边的Model...

    jWebBox2:纯粹的面向对象的JSP布局工具-开源

    JWebBox2.0.0是Java服务器页面(JSP)项目中使用的小型布局工具,起着Tiles和SiteMesh的作用,但是它是纯面向对象设计的,没有XML文件,没有标签,功能强大但简单(仅1个Java类),并且易于使用,可用于构建整个网站...

    simplymongo:一个非常简单的MongoDB包装器,可在几秒钟内为您提供数据库基础知识

    简而言之,Mongo是使用MongoDB的最简单方法,而无需知道如何使用MongoDB。 将客户数据存储在集合中,并轻松获取和修改数据。 最初是为社区创建的。 安装先决条件NodeJS 13+ 带模块的ES6项目安装$ npm install ...

Global site tag (gtag.js) - Google Analytics