我在servlet的requestScope中设置了一个城市列表。
这是我的代码
我已经添加了必需的Taglib
能否请您告诉我containsIgnoreCase为什么不起作用
public class City {
private Long id;
private String name;
private int population;
// getters and setters
}
//
<c:forEach items="${requestScope.cityList}" var="city">
<tr>
<c:if test = "${fn:containsIgnoreCase(${city.name}, 'NewYork')}">
<p>Add a Color Here for NewYork <p>
</c:if>
<c:if test = "${fn:containsIgnoreCase(${city.name}, 'Houston')}">
<p>Add a Color Here Houston <p>
</c:if>
<td><c:out value="${city.id}"></c:out></td>
<td><c:out value="${city.name}"></c:out></td>
<td><c:out value="${city.population}"></c:out></td>
</tr>
</c:forEach>
答案 0 :(得分:1)
应为${fn:containsIgnoreCase(city.name, 'NewYork')}
。您已经在JSP EL表达式内,因此在该表达式内再次使用${}
是无效的。
答案 1 :(得分:1)
containsIgnoreCase无效,因为您尝试在另一个表达式(${city.name}
)内打开表达式(${fn:containsIgnoreCase()}
)。
您应该将代码简化为:
<c:if test = "${fn:containsIgnoreCase(city.name, 'Houston')}">
答案 2 :(得分:0)
您不能嵌套EL表达式。
${city.name}
在另一个EL表达式中时将为null。这就是为什么它不起作用。
但是您可以将它们串联起来
${foo}${bar}
在这种情况下,您可以在forEach块中设置一个局部变量,如下所示:
<c:forEach items="${requestScope.cityList}" var="city">
<c:set var="cityVar" value="${city.name}" />
<tr>
<c:if test = "${fn:containsIgnoreCase(cityVar, 'NewYork')}">
<p>Add a Color Here for NewYork <p>
</c:if>
<c:if test = "${fn:containsIgnoreCase(cityVar, 'Houston')}">
<p>Add a Color Here Houston <p>
</c:if>
<td><c:out value="${city.id}"></c:out></td>
<td><c:out value="${city.name}"></c:out></td>
<td><c:out value="${city.population}"></c:out></td>
</tr>
</c:forEach>
希望有帮助