2012-07-03 18 views
22

私は文字列のリストを持っていると私はセッションにそれを設定します。文字列にELで指定された値が含まれているかどうかをテストするにはどうすればよいですか?

session.setAttribute("datas", result.getBody().getDatas()); 

件のデータ属性、例えば単語「りんご」が含まれていない場合、私は、JSPにチェックしたいです。これが含まれていない場合、メッセージは含まれていません。

アップル バナナ レモン

プリント2回のメッセージ」:セッションは、次の値が含まれている場合には、

<c:forEach items="${datas}" var="data"> 
     <c:if test="${data!='apple'}"> 
      <p> Doesn't contained</p> 
     </c:if> 
    <c:for>   

しかし、前述のコード:当初、私はこのような何かをしようとしました含まれていません "。私はこれが正常だと知っていますが、私が望むものを作るためにこれをどう扱うことができますか?

答えて

46

!=正確にの不等式の検定。代わりにfn:contains()またはfn:containsIgnoreCase()関数を使用する必要があります。

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> 

...

<c:forEach items="${datas}" var="data"> 
    <c:if test="${not fn:containsIgnoreCase(data, 'apple')}"> 
     <p>Doesn't contain 'apple'</p> 
    </c:if> 
</c:forEach> 
+8

jspの先頭に関連するtaglibを宣言することを忘れないでください。 '<%@ taglib prefix =" fn "uri =" http://java.sun.com/jsp/jstl/functions "%>' –

+1

そうでなければ、とにかく自己説明的で、かなりグググラブルな例外/エラーがスローされます。 – BalusC

+4

はい、これは、jsp/jstlの新しい人のための答えに詳細を追加するために書いてあります... –

4

あなたは私たちにFN必要があると思います:FNを使用して

<c:forEach items="${datas}" var="data"> 
    <c:if test="${fn:toLowerCase(data) ne 'apple'}"> 
     <p>Doesn't contain</p> 
    </c:if> 
</c:forEach> 

::toLowerCaseメソッド()をcontainsIgnoreCase()をチェックします部分一致(指定された文字列内の部分文字列の存在)。たとえば、データが「パイナップル」、「バナナ」、「レモン」の場合は、マッチも得られます。私は完全な文字列として 'リンゴ'と照合したいと思っています。

関連する問題