24

String のリストがあり、それをセッションに設定します。

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

次に、たとえば datas 属性に「apple」という単語が含まれていない場合、JSP をチェックインしたいと思います。これが含まれていない場合は、含まれていないメッセージを出力します。最初に私はこのようなことをしようとしました:

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

ただし、セッションに次の値が含まれている場合の前述のコード:

アップル バナナ レモン

「含まれていません」というメッセージを 2 回出力します。これが正常であることはわかっていますが、私が望むものを作るためにこれをどのように扱うことができますか?

4

2 に答える 2

53

正確な不等式の!=テスト。代わりにor関数を使用する必要があります。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>
于 2012-07-03T17:20:52.323 に答える
5

fn:toLowerCase()を使用する必要があります。

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

fn:containsIgnoreCase()を使用すると、部分一致 (特定の文字列内の部分文字列の存在) がチェックされます。たとえば、データが ["Pineapple", "Banana", "Lemon"] の場合も一致します。完全な文字列として「apple」とのみ一致させたいと思います。

于 2012-07-03T22:36:20.617 に答える