我有一个String列表,我将其设置为一个会话:
session.setAttribute("datas", result.getBody().getDatas());
Run Code Online (Sandbox Code Playgroud)
然后我想检查JSP,如果在datas属性中没有包含单词"apple",例如.如果未包含,则打印不包含的消息.最初我试图做这样的事情:
<c:forEach items="${datas}" var="data">
<c:if test="${data!='apple'}">
<p> Doesn't contained</p>
</c:if>
<c:for>
Run Code Online (Sandbox Code Playgroud)
但是前面提到的代码,如果会话包含以下值:
苹果香蕉柠檬
打印两次"不包含"消息.我知道这是正常的,但我怎么能对待这个以达到我想要的呢?
Bal*_*usC 49
精确不平等的!=测试.您需要使用或函数.fn:contains()fn:containsIgnoreCase()
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
Run Code Online (Sandbox Code Playgroud)
...
<c:forEach items="${datas}" var="data">
<c:if test="${not fn:containsIgnoreCase(data, 'apple')}">
<p>Doesn't contain 'apple'</p>
</c:if>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
您需要我们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>
Run Code Online (Sandbox Code Playgroud)
使用fn:containsIgnoreCase()将检查部分匹配项(给定字符串中是否存在子字符串)。因此,例如,如果您输入的数据是[“ Pineapple”,“ Banana”,“ Lemon”],那么您也会获得匹配项。我假设您只想将'apple'匹配为一个完整的字符串。