程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2EE >> JSF標記與JSTL標記混合使用

JSF標記與JSTL標記混合使用

編輯:J2EE

所有談到的JSF定制標記庫都是不錯的,但是,如果我有自己的定制標記,或有第三方的標記庫應該怎麼辦?或者我要使用JSP標准標記庫 (JSTL)?它是一組能做我們剛提到的所有事情的標記庫。在極大程度上,這些標記能與JSF標記混合使用。 Faces標記能在其它標記的內部嵌套使用,反之亦然。 一些產品,象IBM的 WebSphere Application Developer, 鼓勵這種方法。其它的如 Sun的 Java Creator Studio則選擇純的JSF標記,另一方面,Oracle的 JDeveloper 讓你混合和配合使用,但也鼓勵使用純JSF標記。

注意: 無論何時,你將JSF 標記嵌套在非JSF定制標記內時,你必須分派一個組件標識符到JSF 標記。 因為JSTL 是標准的並且許多人熟悉它,我們將用它示范如何將它與 JSF定制標記一起使用。 (如果你想全面了解JSTL, 請看 Shawn Bayern寫的一本極好的書, JSTL in Action.) 讓我們從簡單的例子開始 JSTL 標記和 JSF 標記混合和配合使用。代碼引入了兩個 JSF 標記庫和核心 JSTL 標記庫。

JSTL 標記與 JSF 標記混合使用
代碼內容

  1. <%@ taglib uri="http://Java.sun.com/JSf/core" prefix="f" %>
  2. <%@ taglib uri="http://Java.sun.com/JSf/Html" prefix="h" %>
  3. <%@ taglib uri="http://Java.sun.com/JStl/core" prefix="c" %>
  4. <Html>
  5. <head>
  6. <title>JSF in Action: JSTL Example 1 - Mixing JSF with other custom tags</title>
  7. </head>
  8. <body bgcolor="#FFFFFF">
  9. <f:vIEw>
  10. <h1>
  11. <h:outputText value="Example of using JSF tags with other custom tags"/>
  12. </h1>
  13. <p>
  14. <b>
  15. <c:out value="Here’s the value of your web.XML (don’t do this at home):"/>
  16. </b>
  17. <blockquote>
  18. <f:verbatim>
  19. <c:import url="WEB-INF/web.XML"/>
  20. </f:verbatim>
  21. </blockquote>
  22. </p>
  23. </f:vIEw>
  24. </body>
  25. </Html></code>

在這個例子裡, JSTL 和JSF 標記嵌套在 JSF標記 <f:view>內, <f:vIEw>定義了JSF組件樹的開始。這個例子使用了 JSF 的h標記 (<h:outputText>) 和JSTL <c:out> 標記顯示文本。 在這個頁面內,JSTL <c:import> 標記包含系統的 web.xml 文件 (這不是你想與其它人共享文件的正確方法,所以,不要在一台真實的服務器上這樣做). 因為 web.xml 是一個XML 文件, <c:import>標記要嵌套在<f:verbatim> 內, <f:verbatim>是一個 JSF UIOutput組件並且繪制時轉義XML元素,所以能在HTML頁內正確顯示。這個例子沒有太多的內容,但它示范了在同一頁面內不同的標記能一起使用。注意我們把JSTL 標記嵌套在 JSF <f:verbatim> 標記內,一般而言,它比將 JSF 標記嵌套在其它標記內容易。事實上,任何有子組件的組件如 HtmlDataTable和 HtmlPanelGrid需要將模板文本嵌套在一個<f:verbatim> 標記內。 JSTL 標記與 JSF 標記一起使用使JSF變得更強大,這兩者都使用類似的表達式語言。 (對 JSP 2.0’s 表達式也是如此l). 這允許你以一種直觀的方式在JSTL 和 JSF 標記間共享數據。 這裡舉例說明這一點,讓我們看另一個例子, 它允許用戶在 HtmlInputText 控件中輸入一個值,然後利用這個值用 JSTL <c:forEach>標記重復輸出一個字符串。

JSF 、JSTL 標記和同一個 backing bean
代碼內容

  1. <f:vIEw>
  2. <JSP:useBean class="org.jia.examples.TestForm" id="exampleBean" scope="session"/>
  3. <h1>
  4. <h:outputText value="Example of using JSF and JSTL expression languages"/>
  5. </h1>
  6. <h:form>
  7. <h:outputLabel for="inputInt">
  8. <h:outputText value="How many times do you want to repeat the Oracle’s prophecy?"/>
  9. </h:outputLabel>
  10. <h:inputText id="inputInt" value="#{sessionScope.exampleBean.number}"/>
  11. <h:commandButton value="Go!"/>
  12. <p>
  13. <c:if test="${sessionScope.exampleBean.number > 0}">
  14. <c:forEach begin="0" end="${sessionScope.exampleBean.number - 1}" var="count">
  15. Queen Tracey will achIEve world domination.<br>
  16. </c:forEach>
  17. </c:if>
  18. </p>
  19. </h:form>
  20. ...
  21. </f:vIEw>
  22. ...
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved