亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

學會Tiles在JSF框架中的應用指南

2019-11-18 11:59:42
字體:
來源:轉載
供稿:網友

  假如你還不知道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-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>
  
  好了。所有工

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品动漫一区二区| 国产精品扒开腿做爽爽爽男男| 日韩av有码在线| 午夜精品福利在线观看| 狠狠综合久久av一区二区小说| 97人人模人人爽人人喊中文字| 国产成人一区二区三区小说| 91免费电影网站| 亚洲毛片在线免费观看| 欧美性生交大片免费| 97在线观看免费| 91伊人影院在线播放| 日韩中文在线中文网三级| 91精品国产91久久久久久| 亚洲成av人影院在线观看| 久久久亚洲国产天美传媒修理工| 日韩精品中文字幕视频在线| 国产精品69久久| 久久久www成人免费精品| 欧美电影在线观看完整版| 欧美影院成年免费版| 亚洲精品美女在线观看播放| 中文字幕av日韩| 欧美日韩中文字幕| 欧美大全免费观看电视剧大泉洋| 2021久久精品国产99国产精品| 午夜欧美大片免费观看| 色噜噜久久综合伊人一本| 亚洲成人激情视频| 欧美亚洲国产日本| 成人亲热视频网站| 久久精品中文字幕免费mv| 久久成人综合视频| 久久久久久午夜| 欧美天天综合色影久久精品| 欧美激情影音先锋| 欧美黄色免费网站| 国产精品久久久久久av福利软件| 正在播放欧美视频| 国产精品极品尤物在线观看| 久久久久久久一| 久久久久久久久久久成人| 欧美日韩国产一中文字不卡| 久久久久久久久久久亚洲| 久操成人在线视频| 日韩美女免费观看| 黄色精品一区二区| 国产一区二区三区久久精品| 91高潮精品免费porn| 亚洲已满18点击进入在线看片| 久久久久久尹人网香蕉| 亚洲理论在线a中文字幕| 欧美性xxxx极品hd满灌| 国语自产偷拍精品视频偷| 一区二区欧美日韩视频| 在线观看日韩视频| 午夜精品久久久久久久99热| 国产精品极品美女粉嫩高清在线| 亚洲最大中文字幕| 亚州国产精品久久久| 国产精品自产拍在线观| 欧美大片在线看免费观看| 久久国产精品网站| 亚洲天堂免费观看| 成人激情电影一区二区| 8x拔播拔播x8国产精品| 午夜精品一区二区三区视频免费看| 中文字幕免费精品一区| 97视频在线观看视频免费视频| 狠狠躁夜夜躁久久躁别揉| 国产va免费精品高清在线| 日韩国产欧美精品在线| 精品国产网站地址| 欧美激情在线播放| 欧美有码在线观看视频| 亚洲人成在线观看网站高清| 欧美富婆性猛交| 国产日本欧美一区二区三区| 欧美视频二区36p| 国产精品视频不卡| 国产三级精品网站| 日韩大片免费观看视频播放| 国产ts一区二区| 亚洲欧美日韩中文在线制服| 久久综合色影院| 日韩欧美在线视频观看| 精品国偷自产在线| 亚洲国产精品视频在线观看| 久久久精品视频在线观看| 中文字幕av一区中文字幕天堂| 日韩免费视频在线观看| 亚洲国产婷婷香蕉久久久久久| 久久精品电影网| 日本精品视频在线观看| 91精品国产自产91精品| 国产成人精品网站| 亚洲成色777777女色窝| 97视频在线观看免费高清完整版在线观看| 欧美亚洲成人网| 一本色道久久综合狠狠躁篇的优点| 免费99精品国产自在在线| 日韩中文字幕国产| 一本色道久久综合狠狠躁篇怎么玩| 亚洲网站在线观看| 久久精品国产91精品亚洲| 亚洲娇小xxxx欧美娇小| 亚洲最新中文字幕| 中文字幕成人在线| 欧美一二三视频| 国产午夜精品全部视频在线播放| 黄色成人av在线| 国产精品99久久99久久久二8| 国产精品久久久久久久久久久久| 国产欧美精品xxxx另类| 成年无码av片在线| 日韩欧美国产成人| 中文字幕一精品亚洲无线一区| 97香蕉超级碰碰久久免费的优势| 国产精品wwwwww| 亚洲天天在线日亚洲洲精| 国产精品视频永久免费播放| 欧美超级乱淫片喷水| 91亚洲永久免费精品| 国产成人久久久| 欧美午夜片在线免费观看| 69影院欧美专区视频| 亚洲精品视频免费在线观看| 国产精品亚洲激情| 久久久久久一区二区三区| 国产日韩欧美影视| 久久精品国产一区二区三区| 国产精品精品视频一区二区三区| 欧美性高潮床叫视频| 成人写真福利网| 狠狠色香婷婷久久亚洲精品| 国产精品一区二区三区久久| 亚洲v日韩v综合v精品v| 亚洲综合精品伊人久久| 日本aⅴ大伊香蕉精品视频| 欧美中文字幕视频| 综合国产在线观看| 成人黄色免费网站在线观看| 日韩精品在线私人| 亚洲成人激情在线| 欧美激情精品在线| 8x海外华人永久免费日韩内陆视频| 麻豆国产va免费精品高清在线| 精品无人国产偷自产在线| 久久国产精品久久国产精品| 国产一区二区三区在线观看视频| 欧美在线精品免播放器视频| 亚洲国模精品私拍| 亚洲字幕一区二区| 国产日韩在线看| 日本免费在线精品| 91国内揄拍国内精品对白| 亚洲开心激情网| 欧美性一区二区三区| 性色av一区二区三区在线观看| 亚洲欧洲一区二区三区久久| 欧美日韩中文字幕日韩欧美| 色综合男人天堂| 国产偷亚洲偷欧美偷精品| 福利一区福利二区微拍刺激|