Geronimo 叛逆者: 使用集成程序包:GlassFish JSTL 1.2 和 Apache Geronimo 2.0
2009-11-11 00:00:00 来源:WEB开发网注意我们是如何将 dataTable 绑定到 Java 对象的。然后,我们只需定义表的列,组件自己知道迭代表的行。我们假定使用该数据创建了一个托管的后台 bean (backing bean)(UserBean)。 dataTable 组件将为我们创建 HTML,因此无需为表指定任何 HTML。这是 JSF 的优势之一。
JSF 和 JSP 1.2
JSF 一直都在使用 JSP 技术。但是,当引入 JSF 时,JSP 1.2 是 JSP 技术使用最为广泛的一个版本。因此 JSF 基于 JSP 1.2,这样 JSF 便不支持 JSTL 和 EL。您可能已经注意到了 <h:dataTable> 和 <h:outputText> 的值属性。它们看上去类似于 JSTL 所使用的 EL。但是,在 JSF 1.0 中,它们只是表面相同。JSF 拥有自己的 EL,其工作原理与 JSTL 中引入的 EL 极为相似,并且随后成为 JSP 技术的一部分。但是,JSF EL 与 JSTL EL 并不兼容 — 直到现在。
统一表达式语言
Java EE 5 的关键点之一就是统一表达式语言。这样,JSTL 和 JSF 所使用的 EL 便合为一体。现在已经可以将 JSTL 和 JSF 混合在一起了,如清单 8 所示。
清单 8. JSF 和 JSTL 混合 <f:view>
<c:forEach items="${UserBean.groups}" var="group">
${group.groupName}
<h:dataTable id="#{group.groupId}" value="#{group.users}"
var="user">
<h:column>
<f:facet name="header">UserID</f:facet>
${user.id}
</h:column>
<h:column>
<f:facet name="header">UserName</f:facet>
${user.userName}
</h:column>
<h:column>
<f:facet name="header">Name</f:facet>
${user.firstName} ${user.lastName}"
</h:column>
</h:dataTable>
</c:forEach>
</f:view>
更多精彩
赞助商链接