`
wap
  • 浏览: 75078 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

推荐使用tiles2

阅读更多

Java基于WEB的开发中,在用户界面方面简化开发的工具上,大家的选择习惯性的受一些知名框架的影响去左右。我也不例外,最早时受struts的影响,使用了tiles,并且很愿意使用这种Tiles的用户界面开发习惯,并且在我的开发团队当中推广这种模式。我觉得采用这种界面开发方法会给我们团队带来一些便利:

 

1、美工界面工作可以让更懂用户感受的商务人员与美工交流;
2、技术人员专注于业务模型的实现;
3、使WBS做得可以更细,测试也可以做得很细;
4、以上所有工作可以并行
5、有效的组织项目Views层文件管理,方便团队协作。

 

也许是因为鼎鼎大名的WebWork使用了SiteMesh、鼎鼎大名的Struts在2也使用了SiteMesh,我发现网上对于Tiles2的应用交流相对较少了,而对于SiteMesh的推荐较多。而我在前期研发J10引擎过程中,对于SiteMesh和Tiles2都进行了应用和比较,以便于把这一种我偏爱的方式能够继续在我的团队当中采用,在测试和应用了几个案例后,我最后确定加入了Tiles2的开源框架作为用户界面的项目组“标准模式”,基于:

 

1、项目团队成员一直使用Struts 1的tiles,有助于让成员低培训成本进入应用状态;
2、tiles2的配置相对于SiteMesh更加快捷简单;
3、tiles2的应用更加简单。

 

tiles可以方便的应用在任何jsp、servlet的项目中,下面我对tiles的应用进行一下介绍,如果有不足的地方,欢迎朋友们进行交流。

 

1、准备
我比较建议大家先到http://tiles.apache.org花十分钟时间读一下他的Getting Started和quickstart文档,很有益。然后点击http://www.apache.org/dyn/closer.cgi/tiles/v2.0.5/tiles-2.0.5-bin.tar.gz下载这份tiles-2.0.5(GA)版本。

 

2、配置tiles-def.xml
如果你曾经使用过tiles,下面这个配置文件很熟吧?如果你没用过,呵,对你来说也是很好理解的吧。

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
"http://tiles.apache.org/dtds/tiles-config_2_0.dtd">

<tiles-definitions>

<!-- 全局配置 -->
<definition name="layout" template="/views/layout/layout.jsp">
<put-attribute name="title" value="tiles2用户界面简单示例"/>
<put-attribute name="header" value="/views/layout/header.jsp"/>
<put-attribute name="info" value="/views/layout/info.jsp"/>
<put-attribute name="body" value="/views/layout/body.jsp"/>
<put-attribute name="footer" value="/views/layout/footer.jsp"/>
</definition>
<!--示例进行一个扩展配置-->
<definition name="business.list" extends="layout">
<put-attribute name="title" value="广告效果分析"/>
<put-attribute name="body" value="/views/business/adEffect.jsp"/>
</definition>
</tiles-definitions>

 

<tiles-definitions>标签内主要的子节点就是<definition>标签,这个标签属性如下:

属性
名称 是否必须 值必须 值类型 说明
name true true java.lang.String

指定将要创建的一个definition bean的访问名称。这个必须有的。

template false true java.lang.String

哪一个文件是模板文件,这个模板文件后面会介绍。

role false true java.lang.String

如果配置了这个值的话,需要role的值相等,这个definition才被有效访问,这个功能我没有深究,也不推荐使用,建议大家建立自己更完善的权限控制管理。当然欢迎朋友们完善role应用的示例,tiles自带role的示例,有兴趣的人去读一下就明白了。

extends false true java.lang.String

继承哪一个definition,值是你要继承的definition的name的值。高使用率的属性。

preparer false true java.lang.String

呵,我没使用,如果你要使用的话,要写一个实现他的Prepare接口的类,作用就是在展现你定义的页面前会先执行你的prepare。

实际上一般按我的例子中的就足够用了,OK,我们继续吧。

 

3、配置web.xml

多么easy的事情啊,打开你的web.xml,用你的鼠标copy & paster下面的代码并放到你的web.xml的<web-app>节点下。

	<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>

 org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG这是配置tiles的配置文件,可以配置多个文件,文件之间用逗号分隔即可,文件格式完全相同只是看你团队的WBS需要作调整即可。listener节点是配置一个tiles的监听器——如果你前面花了十分钟时间读了一下tiles官方的Quick start文档的话,也许你还记得,在Configuration一节介绍了很多个配置方式,你可以随自己喜好选择使用servlet、listener、filter之一。如果没有看,OK,点击http://tiles.apache.org/tutorial/configuration.html去看一下吧。

4、框架页layout.jsp

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

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><tiles:getAsString name="title" /></title>
<meta name="description" content="信息提示" />
</head>
<body>
<table border="0" width="950" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
<tr>
<td>
<tiles:insertAttribute name="header" />
</td>
</tr>
<tr>
<td>
<%--
/* 主要信息和操作界面
*
*/
--%>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<c:if test="${info!=null }">
<tr>
<td>
<tiles:insertAttribute name="info" /> </td>
</tr>
</c:if>
<tr>
<td>
<tiles:insertAttribute name="body" />
</td>
</tr>
</table>
<%--
//主信息和操作界面结束。
--%>
</td>
</tr>
<tr>
<td>
<tiles:insertAttribute name="footer" />
</td>
</tr>
</table>
</body>
</html>

  

 特别注意其中<tiles:insertAttribute>和<tiles:getAsString>两个节点,getAsString如下:

属性
名乐 是否必须 值必须 值类型 说明
name true true java.lang.String

属性名称,引用definition attribute的名称

ignore false true boolean

如果设为true,如果发生异常什么的,就给出空白内容。默认为false,会给出cause。

role false true java.lang.String

别用了吧,有兴趣的人去看吧,不推荐使用。

insertAttribute的属性如下:

属性
名称 必须 值必须 值类型 说明
name false true java.lang.String

要插入的属性名称,如果value有值,将被忽略.

value false true java.lang.Object

如果有值,会被直接使用,一般我不太直接用,如果直接用的话,一般也是直接给一个jsp文件的相对content路径。

flush false false boolean

在插入这个页面前先把out stream进行一次flush干净操作。

ignore false true boolean

同getAsString的解释。

role false true java.lang.String

不推荐使用。说n次了。下同

preparer false true java.lang.String 同上

因为我用了一个表格作范例,用表格区格开了body、footer、header、info的定义。其中info是否展现,又采用了c标签和EL语句。你要想写个更简单的页面例子,也可以,为了方便理解,我拿一个tiles官方的layout大家看一下:

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


<table border="2" width="300" bordercolor="Gray">
<tr>
<td bgcolor="Blue"><strong><tiles:getAsString name="title"/></strong></td>
</tr>
<tr>
<td><tiles:insertAttribute name="header"/></td>
</tr>
<tr>
<td><tiles:insertAttribute name="body"/></td>
</tr>
</table>

 5、Hello World一下

header.jsp

<div align="center"><b><i>This is a header</i></b></div>

 info.jsp

<div align="center" style="font-color:red;"><b>%{info}</b></div>

 body.jsp

<h3>Hello World!</h3>

 footer.jsp

<div align="center"><b><i>This is a footer</i></b></div>

 6、页面标签

在页面当中直接用标签,功能相当强大,我就不多介绍了,直接用一个最通用的例子吧,更多的例子,大家看官方example吧。

hello.jsp

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


<tiles:insertDefinition name="layout" />

 OK,部置出去,有没有看到大大的“Hello world”。

 

7、我更推荐的方法是在你的Java业务代码中使用

在你可访问ServetRequest对象的业务代码最后加入:

//获得Tiles容器

TilesContainer container = TilesAccess.getContainer(request
.getSession().getServletContext());
//渲染页面,成功执行后,就显示用户界面了。
container.render(def, request,response);

  

OK,如果有问题,欢迎指出和交流

分享到:
评论
4 楼 王太阳 2013-01-19  
最后的container.render(def, request,response); 
def是什么东西啊
3 楼 xjb19880523 2012-06-29  
我更喜欢在页面中用 <tiles:insertTemplate template="/static/usercenter/jsp/template/head.jsp">  这样在后台控制生成的 template 容易维护
2 楼 wpsfly 2011-02-24  
看了您写的,觉得您写的很认真,虽然到现在已经2年了。我想用tiles2。
1 楼 xiaopingmao 2008-12-18  
[18 16:27:43,203 ERROR] [http-8888-1] taglib.RoleSecurityTagSupport - Error executing tag: Attribute 'body' not found.
org.apache.tiles.TilesException: Attribute 'left' not found.

注:
'body' 是在layout.jsp里面的一个属性
这是什么原因,请楼主帮助解决一下
layout.jsp里的的所有像
<tiles:insertAttribute name="info" />
<tiles:insertAttribute name="body" />
。。。。
都摄找不到属性的异常

相关推荐

    Struts2中使用Tiles组件

    在Struts2中使用Tiles组件,可以更有效地管理和构建动态Web应用的用户界面。 首先,我们需要理解Tiles的基本概念。Tiles是一个视图框架,它的核心思想是页面模板和组合。通过定义模板,我们可以创建一个基本的布局...

    tiles+struts2

    这一步将告诉Struts2使用Tiles作为视图解析器。 ```xml ,"/&gt; &lt;constant name="struts.tiles.enabled" value="true"/&gt; &lt;result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" /&gt; ...

    Struts2 tiles操作例子

    在探讨“Struts2 tiles操作例子”这一主题时,我们首先需要理解Struts2框架以及tiles插件在其中扮演的角色...对于任何想要提升Web应用开发效率的开发者来说,掌握Struts2 tiles插件的使用方法都是必不可少的技能之一。

    使用Tiles 中文

    ### 使用Tiles进行Web应用布局管理 #### 知识点一:Tiles框架的引入与优势 在Web开发领域,特别是基于Java的Struts框架项目中,布局管理与内容组织一直是复杂而重要的任务。传统的做法,如直接在JSP页面中混杂表示...

    struts2 tiles2 配置例子

    最后,通过浏览器访问`http://localhost:8080/%projectName%/Tile.action`,Struts2会根据`struts.xml`中的配置调用`TileAction`,然后使用Tiles2渲染`baseLayout`定义的页面。 通过这种方式,Struts2和Tiles2的...

    Spring3 mvc集成Tiles2

    Spring3 MVC 集成 Tiles2 是一个常见的Web开发任务,用于构建结构化的、模块化的网页布局。Tiles2 是一个视图层框架,它允许开发者将网页分解为多个组件(或称为“tiles”),每个组件负责一部分内容或样式,然后...

    Struts-2.1.6整合Tiles2全攻略

    ### Struts-2.1.6整合Tiles2全攻略 #### 一、概述 本文将详细介绍如何在Struts-2.1.6框架中整合Tiles2,并通过具体步骤指导完成整个配置过程。对于那些希望利用Struts2和Tiles2来构建高效、可维护的Web应用的...

    struts2集成tiles2.myeclipse10教程

    Tiles2是另一个流行的Java库,它允许开发者将网页分解为可重用的部分,这些部分可以组合成更复杂的页面布局。MyEclipse10是一款功能丰富的集成开发环境,特别适合Java EE应用的开发。现在我们将深入探讨如何在...

    springmvc 集成 tiles2实现页面模板局部刷新

    4. **局部刷新**:在Tiles2中,实现局部刷新的关键在于正确地组织页面结构和使用AJAX。每个可刷新的区域可以视为一个单独的tile,通过AJAX请求更新该区域的内容。使用JavaScript库如jQuery或者Vue.js,可以方便地...

    12_使用Tiles框架.pdf

    3. **创建JSP页面**:在JSP页面中使用Tiles提供的标签,例如`&lt;tiles:insert&gt;`,插入预先定义好的组件或模板。 4. **定义模板文件**:创建模板文件,比如一个JSP页面,其中使用`&lt;tiles:insert&gt;`标签指定各个部分(如...

    Struts2+Tiles

    通过阅读和学习《Struts2+Tiles》相关的博客文章(如博文链接所示),你可以深入理解这两者的集成方式,如何配置Struts2的struts.xml和tiles.xml文件,以及如何在Action中使用Tiles API来决定页面内容。此外,你还能...

    SpringMVC使用tiles

    下面我们将详细讨论如何在SpringMVC项目中使用Tiles。 1. **Tiles简介** Tiles框架的核心概念是“定义-使用”模式。定义是指创建一个页面模板,其中包含可替换的部分(称为“部件”),然后在实际页面中使用这些...

    tiles+struts2配置文件

    1. **添加依赖**:在项目的pom.xml文件或lib目录中,添加Tiles和Struts2相关的JAR包,确保项目能够识别和使用这两个库。 2. **配置struts-plugin.xml**:在Struts2的配置文件struts-plugin.xml中,我们需要启用...

    tiles2.1.2前端框架

    2. `tiles-jsp-2.1.2.jar`:这个JSP标签库文件使开发者能够在JSP页面中方便地使用Tiles。通过这些标签,你可以轻松地插入、组合和管理不同的页面部分。 3. `tiles-servlet-2.1.2.jar`:这个组件是与Servlet容器交互...

    在struts中的tiles模板使用的jar包

    同时,需要在Struts的配置文件(如struts-config.xml或struts2的struts.xml)中配置Tiles插件,并在应用的JSP页面中使用Tiles标签来组织内容。 总结起来,使用Struts中的Tiles模板需要一系列的jar包支持,这些库...

    tiles+servlet简单例子

    Tiles全称为Tiles2,是Apache Struts项目的一部分,但它也可以独立于Struts使用。这个例子展示了如何在不依赖Struts的情况下,利用Tiles框架来组织和管理Web应用的视图。 【描述】"没有集成struts,单纯的tiles+...

    Struts2与tiles集成示例

    4. **Action Result配置**: 在Action的结果配置中,使用Tiles的定义作为结果类型,指定返回哪个Tiles定义。 5. **JSP页面引用**: 在JSP页面中,通过Tiles标签库引用Tiles定义,实现页面的动态组合。 通过Struts2和...

    Tiles使用(Struts2)

    要在Struts2项目中使用Tiles,首先需要添加Tiles和Struts2-Tiles插件的依赖到项目构建文件(如pom.xml)。接着,在Struts2的配置文件(struts.xml)中配置Tiles插件,指定tiles的配置文件位置。 3. **Tiles配置...

    struts-tiles框架

    2. **配置Struts-Config.xml**:在Struts配置文件中添加Tiles插件的配置,使框架知道如何处理Tiles请求。 3. **创建Tiles定义**:编写tiles-defs.xml文件,定义页面的结构和内容源。 4. **在Action中使用Tiles**:在...

    struts2 tiles 模板搭建源码可运行

    这个压缩包文件包含了使用Struts2和Tiles框架搭建的模板源码,便于学习和参考。 在Struts2中,Tiles框架的主要功能包括: 1. **页面模板**:Tiles允许定义页面模板,这些模板包含可重用的页面片段,如头部、底部和...

Global site tag (gtag.js) - Google Analytics