2016-04-27 10 views
2

Spring MVCアプリケーションの.jspページでJSTL条件文を使用しようとしています。SpringのJSTL条件

私は、userというモデルとgenderという属性を持っています。

${user.gender} 

すなわち、この場合には値が「M」である:私はの.jspにこのラインを使用する場合、性別の値が表示されます。しかし、値が 'M'のときはリテラルの 'Male'を表示したい。私が見つけたドキュメントに基づいて、私のコードは:

<c:if test="${user.gender=='M'}">Male</c:if> 

となります。しかし、何も表示されません。私がここで間違っていることは何ですか?

ジェンダー変数は、ユーザーモデルクラスのStringとして定義されています。

答えて

-1

は私が修正を見つけ

<c:if test="${user.gender.equals('M')}">Male</c:if> 
+0

これ最終的に==は、JSTLで行うのと同じ関数を呼び出すと何が違うのを生成しないでしょう。そして、私は今、働く、条件を変更し

<c:set var="genderstring" value="${user.gender}"/> <c:set var="genderstringtrimmed" value="${fn:trim(genderstring)}" /> 

:そのために私はJSTL trim機能を使用しました結果。 –

+0

trueではない==文字列が同じインスタンスオブジェクトを参照するかどうかをチェックし、.equalsは文字列の内容が同じかどうかをチェックします。文字列はrefrence型であるため、 –

+0

== Javaでは参照がチェックされますが、ELでは参照されません。 http://docs.oracle.com/javaee/5/tutorial/doc/bnahq.html 'リレーショナル:==、eq、!=、ne、<, lt, >、gt、<=, ge, >「オペレータ」セクションを参照してください。 =、ル。私は最近、ELを使用するために多くの古いJSPページをリファクタリングしましたが、参照をチェックしないことを保証します。 –

1

を試してみてください。わかったように、私の$ {user.gender}値は何らかの理由で空白が埋められていました。したがって、条件付きで動作させるためには、これらのスペースを整理する必要がありました。

<c:if test="${genderstringtrimmed=='M'}">Male</c:if>