分享
 
 
 

学会Tiles在JSF框架中的应用指南

王朝html/css/js·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

假如你还不知道Tiles是什么,这篇文章对你没有意义。假如你不了解JSF,那你看这篇文章是在浪费时间。假如你正在为怎么在JSF里面用Tiles发愁,This is what u want!!!!!!

可能有人会问:“为什么用tiles?为什么用JSF,不用Struts?”。假如你对tiles在struts中的应用了如指掌,那你不会问第一个问题。同样,假如你用过JSF,我相信你会在以后的项目中优先考虑JSF而不是Struts。(其实我比较赞成Struts和JSF的互补,他们各有各的优势,Struts强大的逻辑控制使它更适合于表示逻辑简单而控制逻辑复杂的系统,而JSF在view层次的表现力同样是惊人的。建议去看看David Geary的帖子“Top Ten Reasons to Prefer JSF over Struts”)

好了,废话不说了。来看看Tiles是怎样融合到JSF里面的。注重,JSF的配置我不多讲,假如你JSF都不知道怎么运转,那就不要浪费时间了。

1.把Struts1.1里面的struts.jar考到lib目录下面。

2.在web.XML里面加上下面配置:

<servlet

<servlet-nameFaces Servlet</servlet-name

<servlet-classJavax.faces.webapp.FacesServlet</servlet-class

<load-on-startup1</load-on-startup

</servlet

<servlet

<servlet-nameTilesServet</servlet-name

<servlet-classorg.apache.struts.tiles.TilesServlet</servlet-class

<init-param

<param-namedefinitions-config</param-name

<param-value/WEB-INF/tiles-defs.xml</param-value

</init-param

<init-param

<param-namedefinitions-parser-validate</param-name

<param-valuetrue</param-value

</init-param

<load-on-startup2</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

<definitionname="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

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

<titlemain</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-outcomesummary</from-outcome

<to-view-id/JSPROOT/reports/summary_t.jsp (不是summary_report.jsp)</to-view-id

</navigation-case

</navigation-rule

好了。所有工

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有