92

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

<%= ansokanInfo.getPSystem() %>

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

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

しかし、上記は何も表示しません。どうすればいいですか?または、スクリプトレットを使用することもできますか?

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

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

4

4 に答える 4

151

試す:

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

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

于 2012-04-17T11:11:06.850 に答える
39
<c:if test="${ansokanInfo.pSystem eq 'NAT'}">
于 2012-04-17T11:13:52.567 に答える
16

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

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

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

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

<c:if test = "${ansokanInfo.PSystem == 'NAT'}">
于 2012-04-17T11:25:26.337 に答える
5

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

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

<c:if test="${ ansokanInfo.pSystem  == 'NAT'}"> tataa </c:if>
于 2012-04-17T11:14:17.863 に答える