JSF标记与JSTL标记混合使用

开发 后端
本文介绍JSF标记与JSTL标记混合使用,以及Oracle的 JDeveloper 让你混合和配合使用,但也鼓励使用纯JSF标记。

所有谈到的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. 使JSF支持带有HTMLMessage
  2. 利用JSF和Hibernate构建Web应用
  3. 比较JSF、Spring MVC、Stripes、Struts 2、Tapestry、Wicket
  4. JSF能否拯救WEB
  5. 各种JSF框架比较
责任编辑:佚名 来源: JavaEye
相关推荐

2009-08-03 09:15:39

JSP标准标记库JSTL

2009-07-07 14:33:44

JSP入门

2021-09-28 07:48:54

prometheus监控远端服务

2024-10-08 08:36:50

HTML标签前端

2010-07-06 16:26:33

2010-08-18 13:23:36

FirefoxHTML

2009-07-03 09:08:23

JSP标记学习笔记

2009-07-03 09:08:23

JSP标记学习笔记

2013-03-25 09:25:48

OpenStack公有云Nova

2021-08-16 10:35:52

JVM标记法屏障

2010-01-20 17:41:13

VB.NET标记语句

2010-02-23 13:36:42

WCF DataCon

2020-07-09 15:45:22

GoGC内存

2009-11-30 16:24:24

PHP脚本

2009-09-04 14:14:55

C#文档

2010-08-27 15:16:26

htmlbodyCSS

2023-08-08 10:19:53

文档标记语言

2011-05-05 09:36:48

Oracle安全标记

2013-04-23 16:59:22

Windows Pho路径标记语法

2022-07-29 09:35:25

WAF溯源识别
点赞
收藏

51CTO技术栈公众号