这是什么java视图技术?

时间:2010-02-25 22:32:00

标签: java jsp templates jstl el

似乎速度和自由标记看起来非常相似,至少在基本用途方面。

无论如何,什么是“内置”或标准视图框架? 它看起来像:

<c:if test="${someobject.property != null}">

2 个答案:

答案 0 :(得分:6)

Unified Expression Language (EL)最常使用JSTL

我认为它看起来更像是

<c:if test="${someobject.property != null}">

答案 1 :(得分:5)

确实是JSTL。然而,它不是内置的,但您只需将jstl-1.2.jar放在/WEB-INF/lib中,并根据TLD文档在JSP页面的顶部声明其中一个taglib,例如: JSTL core

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

这样您就可以使用链接中列出的标签。大多数core tags只是流量控制标签。 JSTL还有XMLSQL taglibs,但它们仅用于快速原型设计,不应在实际生产中使用。然后有Format (fmt) taglib,非常适合internationalization and localization(i18n和l10n)。最后有一个有用的functions (fn) taglib,它提供了简单的EL函数。

然后有${}件事。这称为expression language。它只是在PageContext#findAttribute()的帮助下以Javabean的方式访问任何页面,请求,会话和应用程序范围中的“后端数据”(属性),并调用Javabean getters 。如果您了解 scriptlets ,那么您将理解以下示例:

${user.address.street}

大致可以解决

<%= pageContext.findAttrubute("user").getAddress().getStreet() %>

EL nullsafe 。当${user}${user.address}解析为null时,它将跳过所有内容并且不显示任何内容。在 scriptlets 中,您可以在嵌套调用中获得NPE,或者在最后一次调用时获得null

然后是统一的EL,用#{}语法表示。它(目前为止)仅与JavaServer Faces (JSF)结合使用。它可以在 last 属性上调用Javabean setter 。 E.g。

<h:inputText name="foo" value="#{bean.foo}">

将在幕后粗略地做如下

pageContext.findAttribute("bean").setFoo(request.getParameter("foo"));

这不是视图技术。 JSP本身已经是视图技术本身。 JSTL只是一个 taglib 。 EL只是JSP规范的一部分。 Java EE提供的另一种视图技术是Facelets,它基于XHTML,为JSF提供了比JSP更无缝的集成。