可能有人会问:“为什么用tiles?为什么用JSF,不用Struts?”。如果你对tiles在struts中的应用了如指掌,那你不会问第一个问题。同样,如果你用过JSF,我相信你会在以后的项目中优先考虑JSF而不是Struts。(其实我比较赞成Struts和JSF的互补,他们各有各的优势,Struts强大的逻辑控制使它更适合于表示逻辑简单而控制逻辑复杂的系统,而JSF在view层次的表现力同样是惊人的。好了,废话不说了。来看看Tiles是怎样融合到JSF里面的。注意,JSF的配置我不多讲,如果你JSF都不知道怎么运转,那就不要浪费时间了。
1.把Struts1.1里面的struts.jar考到lib目录下面。
2.在web.xml里面加上下面配置:
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>TilesServet</servlet-name>
<servlet-class>org.apache.struts.tiles.TilesServlet</servlet-class>
<init-param>
<param-name>definitions-config</param-name>
<param-value>/WEB-INF/tiles-defs.xml</param-value>
</init-param>
<init-param>
<param-name>definitions-parser-validate</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
蓝色部分是你要加的。注意上面的servlet的load顺序。
3.添加tiles-defs.xml到/WEB-INF/下面,这个配置文件和以前在struts里面的没有差别,一个典型的配置如下:
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration//EN"
"http://jakarta.apache.org/struts/dtds/tiles-config.dtd">
<tiles-definitions>
<definition name="report.main" path="/JSPROOT/templates/topLayout.jsp">
<put name="header" value="/JSPROOT/templates/header.jsp"></put>
<put name="menu" value="/JSPROOT/templates/menu.jsp"></put>
<put name="footer" value="/JSPROOT/templates/footer.jsp"></put>
<put name="body" value="/JSPROOT/reports/report_main.jsp"></put>
</definition>
<definition name="report.summary" extends="report.main">
<put name="body" value="/JSPROOT/reports/summary_report.jsp" type="page"></put>
</definition>
</tiles-definitions>
上面定义了2个view,一个report.main,一个report.summary
4.然后和原来一样,编写你自己的layout文件,及header,footer等....典型的一个layout如下:
<%@taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles"%>
<html>
<head>
<title>
<tiles:getAsString name="header"/>
</title>
</head>
<body bgcolor="#ffffff" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0" onKeyPress="return killEnt();">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2" align="justify">
<tiles:insert attribute="header" flush="false" ignore="false"> </tiles:insert>
</td>
</tr>
<tr>
<td colspan="2" bgcolor="#000000" align="right">
</td>
</tr>
<tr height="620">
<td bgcolor="#030D97" align="Left" valign="Top" width="17%">
<tiles:insert attribute="menu" flush="false" ignore="false"> </tiles:insert>
</td>
<td width="83%" style="vertical-align:top;">
<table width="100%">
<tr>
<td style="vertical-align:top;padding-top:10px;padding-left:10px;">
<tiles:insert attribute="body" flush="false" ignore="false"> </tiles:insert>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<tiles:insert attribute="footer" flush="false" ignore="false"> </tiles:insert>
</td>
</tr>
</table>
</body>
</html>
注意:一定不能在f:view里面套f:view。也就是说你在layout.jsp不要用到JSF的标签来产生一些业务逻辑。实际上我们主要的逻辑也是在body里面实现的。在layout里面主要是定义一些文字,图片什么的。同样在header.jsp,footer.jsp,menu.jsp里面也只写html代码,不要用JSF标签。
5.编写两个jsp文件like this:
main_t.jsp:
<%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>
<tiles:insert definition="report.main">
</tiles:insert>
summary_t.jsp:
<%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>
<tiles:insert definition="report.summary">
</tiles:insert>
这一步是关键,如果理解到了这里,那你就可以轻松把tiles和jsf结合起来。原来在Struts我们配置的forward对象可以直接是tiles-defs.xml里面的一个view,但是在JSF里面不行。这里的navigation必须是定义到一个jsp文件,所以我们只有在这个文件里面再来插入tiles里面所定义的view。这样的坏处就是我们在tiles-defs里面定义的每一个view都必须有一个对应的想上面一样的jsp文件,而且在JSF里面配的navigation都必须是基于这个文件到的。注意:不只是to-view-id,from-view-id也必须是对应上面的这种文件,不能是body的jsp文件(不懂可以看第9步的配置)。
6.如果你都理解了,你可以不往下看了。。下面是为了上面的例子更完整而做的剩余步骤。
7.编写一个index.jsp
<html>
<head>
<title>
index
</title>
</head>
<body bgcolor="#ffffff">
<jsp:forward page="main_t.faces"> //对应到上面第5步的文件
<jsp:param name="" value=""/>
</jsp:forward>
</body>
</html>
8.编写2个tiles-defs.xml里面定义的body的jsp文件
report_main.jsp:
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<html>
<head>
<title>main</title>
<link rel="stylesheet" type="text/css" href="sworx_IE.css"/>
</head>
<body bgcolor="#ffffff">
<h1 align="center" class="header">Report</h1>
<f:view>
<h:form>
<p>
<h:commandButton action="summary" value="Summary Report" styleClass="button" style="width:120"> </h:commandButton>
<h:commandButton type="reset" value="Clear" styleClass="button" style="width:60"> </h:commandButton>
</p>
</h:form>
</f:view>
</body>
</html>
summary_report.jsp:
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<html>
<head>
<title>main</title>
<link rel="stylesheet" type="text/css" href="sworx_IE.css"/>
</head>
<body bgcolor="#ffffff">
<h1 align="center" class="header">Summary Report</h1>
</body>
</html>
9.配置face-config.xml:
...........................
<navigation-rule>
<from-view-id>/JSPROOT/reports/main_t.jsp (注意:不是report_main.jsp,这样在有的IDE里面可能会报report_main.jsp有错,比如JB2005,不用管它)</from-view-id>
<navigation-case>
<from-outcome>summary</from-outcome>
<to-view-id>/JSPROOT/reports/summary_t.jsp (不是summary_report.jsp)</to-view-id>
</navigation-case>
</navigation-rule>
....................
分享到:
相关推荐
jsf入门小列子和 jsf与Tiles结合小列子, 可以帮助初学都快迅入门
JSF 中MyFaces 的一个例子,该例子集成了如何使用tiles
tiles2.1.2一个很好的前端框架技术,非常适合管理类页面架构
JSF 框架整合hibernate tiles 登录例子,完善整合,数据库采用SQL Server Management Studio Express。
struts资料\Tiles框架--页面布局
struts中web网页布局框架struts-tiles,简单配置就可。
12_使用Tiles框架.pdf
spring+tiles开发,其中包含了tiles中所需的所有tiles包,(注意适合spring3.0以上使用开发)
tiles框架增加一个页面的步骤,tiles类似于java中的的标签,是一种模板系统,我们可以用他来创建一个统一风格和外观 的web应用程序,也可以用来创建一些可重用的模块(view compents)。
stauts2.0整合tiles 框架 stauts2.0整合tiles 框架 stauts2.0整合tiles 框架 stauts2.0整合tiles 框架 stauts2.0整合tiles 框架 例子代码
Tiles框架入门教程示例(含Springmvc),简单的springmvc整合tiles框架,maven管理
tiles框架.ppttiles框架.ppttiles框架.ppttiles框架.ppttiles框架.ppttiles框架.ppttiles框架.ppttiles框架.ppt
NULL 博文链接:https://nnbchuang.iteye.com/blog/1434300
,Struts Tiles 框架提供了一种模板机制,模板定义了网页的 布局,同一模板可以被多个Web 页面共用。此外,Tiles 框架还允许定义可重用的Tiles 组 件,它可以描述一个完整的网页,也可以描述网页的局部内容。简单的...
spring+tiles开发,其中包含了tiles中所需的所有tiles包,(注意适合spring3.0以上使用开发)
Tiles 框架建立在JSP的include指令的基础上,但它提供了比JSP的 include指令更强大的功能。Tiles框架具有如下特性: •创建可重用的模板 •动态构建和装载页面 •定义可重用的Tiles组件 •支持国际化 Tiles框架...
具有完整应用价值,轻量级配置环境。分别在JSF 基础上加入了页面导航功能struts tiles,和richfacse 3.2.2报表功能。
struts中tiles标签简介,Tiles框架可以令我们组合可以复用的Tiles来搭建网页。
一个简单的应用Struts中tiles的例子
apache tiles3.0 开源框架 页面组装