0

これは明らかなことかもしれませんが、私には理解できません。

どして

<c:if test="<%= (aString!= null) && (!aString.equalsIgnoreCase(""))%>">

いつも失敗する

<c:if test="<%=(aString!= null) && (aString.trim().length() > 0)%>">

完全にうまく機能しますか?スクリプトレットはc:ifの外では完全に正常に機能するので、コアタグ内に配置すると何が問題になるのか疑問に思います。例外は次のようになります

JSPG0055E:名前[]値[))%]からxml属性を作成できませんエラー・コード:500

4

2 に答える 2

2

特定のエラーは、これらの二重引用符によって引き起こされます。それらはtest属性の値をすぐに終了します。

しかし、これらすべてが正しいアプローチではありません。実際、「oldschool」スクリプトレットと「modern」taglibsを混在させることで、間違ったことをしているのです。この構文はまったくサポートされていません。taglib属性でスクリプトレットを使用することはできません。${}代わりに、taglib属性でEL(これらのもの)を使用する必要があります。

aStringページ、リクエスト、セッション、またはアプリケーションスコープの属性として事前に配置されている場合は、次のようになります。

request.setAttribute("aString", aString);

次に、これはaStringnullでも空でもないかどうかを確認するために行う必要があります。

<c:if test="${not empty aString}">

参照:

于 2013-01-05T03:13:30.693 に答える
-4

nullでequalsIgnoreCaseを使用したり、オブジェクトを設定したりすることはできません。equalsIgnoreCaseを使用して文字列がnullでないことを確認するのはなぜですか。これは適切な方法ではありません。最初のチェック(=!null)で十分です。

于 2013-01-05T03:00:47.053 に答える