web-dev-qa-db-ja.com

等しい文字列のタグの場合、JSTL

JSPページのオブジェクトから変数を取得しました。

<%= ansokanInfo.getPSystem() %>

変数の値はNATであり、これは正しいため、この値に特定のページ要素を適用したいです。タグを使用してケースを知るにはどうすればよいですか?私は次のようなものを試しました

<c:if test = "${ansokanInfo.getPSystem() == 'NAT'}">      
   process  
</c:if> 

しかし、上記は何も表示しません。どうすればいいですか?または、スクリプトレット、つまり.

<% if (ansokanInfo.getPSystem().equals("NAT"){ %>
process
<% } %>

答えやコメントをありがとう。

83

試してください:

<c:if test = "${ansokanInfo.PSystem == 'NAT'}">

JSP/Servlet 2.4(バージョン番号だと思います)はELのメソッド呼び出しをサポートせず、プロパティのみをサポートします。最新のサーブレットコンテナは、メソッド呼び出し(Tomcat 7など)をサポートしています。

140
Adam Gent
<c:if test="${ansokanInfo.pSystem eq 'NAT'}">
34
Phani

他の回答では、EL式で使用するプロパティ名に関する重要な詳細の1つが欠けていると思います。メソッド名からプロパティ名に変換するためのルールは、Java Bean標準の一部である 'Introspector.decpitalize` で指定されています。

これは通常、最初の文字を大文字から小文字に変換することを意味しますが、複数の文字があり、最初と2番目の文字の両方が大文字である(異常な)特殊なケースでは、そのままにします。

したがって、「FooBah」は「fooBah」になり、「X」は「x」になりますが、「URL」は「URL」のままです。

したがって、JSTLコードは次のようになります。大文字の「P」に注意してください。

<c:if test = "${ansokanInfo.PSystem == 'NAT'}">
16
Jörn Horstmann

スクリプトレットを使用できますが、これは方法ではありません。現在、JSPファイル内のインラインスクリプレットまたはJavaコードは悪い習慣と見なされています。

JSTLについてもう少し読む必要があります。 ansokanInfoオブジェクトがリクエストスコープまたはセッションスコープにある場合、$ {ansokanInfo}のようなオブジェクト(toString()メソッド)を出力すると、いくつかの基本情報が得られます。 $ {ansokanInfo.pSystem}は、オブジェクトのgetterメソッドを呼び出す必要があります。これがすべて機能する場合、これを使用できます。

<c:if test="${ ansokanInfo.pSystem  == 'NAT'}"> tataa </c:if>
5
JohanB