JSTL -

2012-01-25 14 views
0

iは短いコードがある場合/選択:JSTL -

<c:choose> 
<c:when test="${logging==1}"> 
    write 1 
</c:when> 
<c:otherwise> 
    write 2 
</c:otherwise> 

</c:choose> 

問題は、このコードは動作しないということです。ロギングが1か0かどうかは関係ありません。コードは私に「2を書く」というテキストを表示します。

どうしたのですか?

<c:choose> 
<c:when test="${logging eq 'added'}"> 
    write 1 
</c:when> 
<c:otherwise> 
    write 2 
</c:otherwise> 

</c:choose> 

は、私の 'ログ'はStringです:ロギングは、あなたの答えはに私のコードを変更した後a've int型

です。なお、表示 'を追加しました' と$ディスプレイ 'クラスjava.lang.String' {[ 'クラス']をロギング}が、それはまだ 'と書く2' を書く

iも<%する@ taglibのを持っていますURI = "http://java.sun.com/jsp/jstl/core" プレフィックス= "C" %>宣言

マイweb.xmlのは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
+0

「ログ」はセッションまたは要求の境界ですか? – adatapost

+0

どのサーブレット・コンテナを使用していますか? – BalusC

答えて

0

私はありません"$ {logging == 1}"の構文が正しい場合は100%です。

このタイプのコードでは、 "$ {logging eq 1}"構文を使用してください。

また、変数ロギングは正しく定義されていますか?

可能であれば、残りのコードを表示できますか?

+2

$ {logging == 1}が正しいです。私は$ {logging eq 1}以上の方が好きです。なぜなら私にとっては読みやすいからです。 –

1

値がintではない場合に発生しますが、たとえばStringです。文字列の場合、比較値を引用する必要があります。

<c:choose> 
    <c:when test="${logging == '1'}"> 
     write 1 
    </c:when> 
    <c:otherwise> 
     write 2 
    </c:otherwise> 
</c:choose> 

もう1つの考えられる原因は、ELが単純に評価されないことです。それは、あなたのweb.xmlルート宣言が間違っている場合に起こります。適切な宣言の例については、our JSTL wiki pageの下部も参照してください。