少なくとも基本的な使い方では、velocity と freemarker はかなり似ているように見えます。
とにかく、「組み込み」または標準のビューフレームワークとは何ですか? 次のようになります。
<c:if test="${someobject.property != null}">
それは確かにJSTLです。ただし、組み込みではありませんが、jstl-1.2.jarを にドロップ/WEB-INF/lib
し、TLD ドキュメントに従って、JSP ページの上部でその taglibs の 1 つを宣言するだけです。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
このようにして、リンク リストのタグで を使用できます。コア タグのほとんどは単なるフロー制御タグです。JSTL にはXMLとSQLの taglibs もありますが、これらは迅速なプロトタイピングのみを目的としており、実際の運用では使用しないでください。次に、国際化とローカリゼーション(i18n と l10n)に最適なFormat (fmt) taglib があります。最後に、シンプルな EL 関数を提供する便利な関数 (fn) taglib があります。
それから${}
物事があります。これを表現言語と呼びます。PageContext#findAttribute()
Javabean getters を使用して呼び出し、Javabeanのような方法でページ、リクエスト、セッション、およびアプリケーション スコープのいずれかで「バックエンド データ」(属性) にアクセスするだけです。scriptletsを理解している場合は、次の例を理解できます。
${user.address.street}
これは大まかに次のように解決されます
<%= pageContext.findAttrubute("user").getAddress().getStreet() %>
EL はnullsafeです。${user}
またはがに${user.address}
解決されるとnull
、すべてスキップされ、何も表示されません。スクリプトレットでは、ネストされた呼び出しで NPE を取得するかnull
、最後の呼び出しで単に NPE を取得します。
#{}
次に、構文で示される統合 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 が提供するもう 1 つのビュー テクノロジはFaceletsです。これは XHTML ベースであり、JSP よりもはるかにシームレスな JSF の統合を提供します。