这是什么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也有XML和SQL 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}">