JSTLタグを使用しています。私は以下のコードを持っています。
<c:set var="refreshSent" value="false"/>
これで、変数refreshSentにブール値または文字列が含まれますか?
ありがとう!
ブール値になります。比較することで確認できます
<c:if test="${refreshSent eq false}">
と
<c:if test="${refreshSent eq 'false'}">
2 つ目は、文字列の比較です。
ですString
。
次の JSP コード:
<c:set var="refreshSent" value="false" />
<c:set var="refreshSent2" value="${false}" />
<c:set var="refreshSent3" value="${'false'}" />
<div>
<div>${refreshSent} : ${refreshSent['class']}</div>
<div>${refreshSent2} : ${refreshSent2['class']}</div>
<div>${refreshSent3} : ${refreshSent3['class']}</div>
</div>
ブラウザに次を出力します。
false : class java.lang.String
false : class java.lang.Boolean
false : class java.lang.String
ただし、 aが予期されるrefreshSent
EL 式で変数を使用すると、( JSP 仕様に従って) への呼び出しによって aに変換されます。boolean
boolean
Boolean.valueOf(String)
したがって、次を使用する場合:
<c:if test="${refreshSent}">
属性の値はtest
ブールfalse
値に設定されます。式の${refreshSent}
結果は になりますString
が、test
属性は を想定しているためboolean
、 への呼び出しBoolean.valueOf("false")
が行われます。
これをブール値に使用します
<c:set var="refreshSent" value="${false}"/>
<c:if test="${refreshSent}">
some code ........
</c:if>
<c:set var="refreshSent" value="false"/>
の式が;とvalue
評価される場合。String
の値はvar refreshSent
タイプString
です。
http://docs.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/を参照してください。
舞台裏で行われる自動型変換があります。
http://today.java.net/pub/a/today/2003/10/07/jstl1.htmlを参照してください。