看起來velocity和freemarker看起來相當類似,至少對於基本用法來說。這是什麼java視圖技術?
無論如何,什麼是「內置」或標準視圖框架調用? 它看起來像:
<c:if test="${someobject.property != null}">
"/">
看起來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}">