1

Djangoテンプレート言語を使用した後、私は本当に次のようなことができなくなっています。

{% if condition %}
    <!-- snip -->
{% else %}
    <!-- snip -->
{% endif %}

JSPを使用しているとき、次のようなことをしていません。

<logic:equal name="something" value="example">
    <!-- snip -->
</logic:equal>
<logic:notEqual name="something" value="example">
    <!-- snip -->
</logic:notEqual>

また:

<% if (condition) { %>
   <!-- snip -->
<% } else { %>
   <!-- snip -->
<% } %>

チェックごとにタグのペアを用意するだけでなく、とelseをサポートするカスタムタグを作成することは可能ですか?else if

それが不可能な場合、「好ましい」スタイルはどれですか?スクリプトレットまたは複数のタグペア?私の組織では、ほとんどの人がスクリプトレットに眉をひそめているようですが、私がリストしたような単純な条件文がそれほど悪い理由を実際には聞いていません。

4

5 に答える 5

4

JSTLタグには、複数選択のように機能する選択タグが付属しています。

<c:choose>
    <c:when test="${first condition}">
       whatever
    </c:when>
    <c:when test="${second condition}">
       whatever
    </c:when>
    <c:when test="${third condition}">
       whatever
    </c:when>
    <c:otherwise>
          whatever else
    </c:otherwise>
 </c:choose>
于 2009-06-04T01:05:13.177 に答える
1

上記の解決策は機能します(<c:choose>および<c:if>)。

より多くのことを行うため、またはより「ドメイン固有」にするためにカスタムタグを作成することに興味がある場合、それらは実際には非常に簡単です。

私は数年前にJavaOneでプレゼンテーションを行いました。スライドはhttp://javadude.com/articles/javaone/index.html(最初のセクション)にあります。ループタグと条件付きタグの記述方法の詳細があります。(私は標準のタグライブラリが出る前にプレゼンテーションをしました、ところで)

http://www.orionserver.com/docs/tutorials/taglibs/index.htmlには、非常に優れたカスタムタグチュートリアルもあります。orionサーバーの詳細がいくつかありますが、そのほとんどは非常に一般的です。

于 2009-06-04T13:15:09.620 に答える
0

標準のタグライブラリには、条件付きタグがあります。

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

</c:if>

jstlで参照を検索します。

これはjspで直接行うこともできますが、少し眉をひそめています。

<% if (something) { %>
 ... this will only display if something is true ...
<% } >
于 2009-06-04T00:53:14.340 に答える
0

bodycontent でタグを検索することを知っていたカスタム JSP タグを作成できなかった理由がわかりません。これは「ベスト プラクティス」ではありませんが、非常にクリーンで直感的な方法です。

于 2009-11-30T20:25:14.173 に答える