这是什么java视图技术?

问题描述:

看起来velocity和freemarker看起来相当类似,至少对于基本用法来说。这是什么java视图技术?

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

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

这的确JSTL。但不是内置的,但您需要做的仅仅是将jstl-1.2.jar放在/WEB-INF/lib中,并根据TLD文档(例如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 获取者。如果你了解小脚本,那么你就会明白下面的例子:

${user.address.street} 

这大致解析

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

EL是nullsafe。当${user}${user.address}解决为null,那么它只会跳过它并不显示任何内容。在scriptlets你将在嵌套的调用上获得NPE,或者在最后一次调用时获得简单的null

然后是统一的EL,用#{}语法表示。它(至今)仅与JavaServer Faces (JSF)结合使用。它能够通过调用Javabean 设置器上的上一个属性。例如。

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

将在幕后做大致如下一样

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

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

这是最有可能Unified Expression Language (EL)它使用JSTL

我认为它看起来更像

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