14

そのため、Sun の J2EE ドキュメント ( http://docs.sun.com/app/docs/doc/819-3669/bnani?l=en&a=view ) によると、「タグ属性が必要ない場合、タグ ハンドラはデフォルト値。」

私の質問は、ドキュメントの説明に従ってデフォルト値をどのように定義するかです。コードは次のとおりです。

<%@ attribute name="visible" required="false" type="java.lang.Boolean" %>
<c:if test="${visible}">
     My Tag Contents Here
</c:if>

明らかに、このタグはタグ ディレクティブとコア ライブラリのインポートがないため、コンパイルされません。私のポイントは、「可視」プロパティをデフォルトでTRUEにしたいということです。「タグ属性は必須ではない」ため、「タグ ハンドラはデフォルト値を提供する必要があります」。デフォルト値を提供したいのですが、何が欠けていますか?

どんな助けでも大歓迎です。

4

2 に答える 2

16

私は自分の質問に答えます。java.lang.Boolean私はひらめきを得て、それがクラスであってプリミティブではないことに気付きました。これは、値が null になる可能性があり、テスト後、この値が null であることはほぼ間違いないことを意味します。

値が定義されていない場合は、null が渡されます。それ以外の場合、値は渡されたものです。したがって、属性を宣言した後に最初に行うことは、それが null かどうかを確認することです。null の場合、値が渡されていないか、誰かが null を渡したことがわかり、デフォルト値に変換する必要があります。

<c:if test="${visible == null}"><c:set var="visible" value="${true}" /></c:if>
于 2010-05-23T04:21:01.733 に答える
5

JSP EL と条件演算子を使用すると、少し簡潔になり、さらに短くなります。

<c:set var="visible" value="${(empty visible) ? true : visible}" />
于 2014-01-15T01:56:43.177 に答える