如何在 jsp/jstl 的 foreach 循环中比较两个字符串?
How to compare two string in foreach loop of jsp/jstl?
我需要在 foreach 循环中比较字符串。
我的开发环境:
1) MAC 10.11,
2) STS 版本:3.7.3.RELEASE
4) Spring 网络 MVC,
5) Pivotal tc Server Developer Edition v3.1
<c:set var="day" scope="session" value="${day}_${curId}"/>
<c:set var="new_day" scope="session" value="${2_456123}"/>
<c:if test="${day eq new_day}">
<p> Both are same.
</c:if>
但是系统在第
行出现问题
<c:if test="${day eq new_day}">
有人可以指点一下吗?
感谢和问候,
阿伦·德瓦吉
问题很可能是由以下分配引起的
<c:set var="day" scope="session" value="${day}_${curId}"/>
在上面的行中,您为 var day
分配了一个值,该值来自另一个具有相同名称但不一定具有相同 scope
的变量。换句话说,您可能已经有一个名为 day
的变量,它位于另一个范围内。
默认范围是页面范围,然后您顺序请求、会话和应用程序,因此如果在执行测试时将考虑该变量的页面或请求范围,而您在会话范围中定义的变量将被忽略。
你有两个选择
更改会话范围中定义的变量的名称,并在执行测试时使用该名称
<c:set var="niceday" scope="session" value="${day}_${curId}"/>
<c:if test="${niceday eq ...}">
指定c:if标签中使用的变量范围
<c:if test="${sessionScope.day eq ...}">
希望对您有所帮助。
这是演示代码。
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<c:set var="day" scope="session" value="2"/>
<c:set var="curId" scope="session" value="456123"/>
<c:set var="day" scope="session" value="${day}_${curId}"/>
<c:set var="new_day" scope="session" value="2_456123"/>
<c:if test="${day eq new_day}">
Both are same.
</c:if>
打印:两者相同。
如果我将第 5 行更改为
<c:set var="new_day" scope="session" value="${2_456123}"/>
这是你发布的内容,然后我收到一条错误消息
包含无效表达式:javax.el.ELException:无法解析表达式 [${2_456123}]
我需要在 foreach 循环中比较字符串。
我的开发环境:
1) MAC 10.11,
2) STS 版本:3.7.3.RELEASE
4) Spring 网络 MVC,
5) Pivotal tc Server Developer Edition v3.1
<c:set var="day" scope="session" value="${day}_${curId}"/>
<c:set var="new_day" scope="session" value="${2_456123}"/>
<c:if test="${day eq new_day}">
<p> Both are same.
</c:if>
但是系统在第
行出现问题<c:if test="${day eq new_day}">
有人可以指点一下吗?
感谢和问候,
阿伦·德瓦吉
问题很可能是由以下分配引起的
<c:set var="day" scope="session" value="${day}_${curId}"/>
在上面的行中,您为 var day
分配了一个值,该值来自另一个具有相同名称但不一定具有相同 scope
的变量。换句话说,您可能已经有一个名为 day
的变量,它位于另一个范围内。
默认范围是页面范围,然后您顺序请求、会话和应用程序,因此如果在执行测试时将考虑该变量的页面或请求范围,而您在会话范围中定义的变量将被忽略。
你有两个选择
更改会话范围中定义的变量的名称,并在执行测试时使用该名称
<c:set var="niceday" scope="session" value="${day}_${curId}"/> <c:if test="${niceday eq ...}">
指定c:if标签中使用的变量范围
<c:if test="${sessionScope.day eq ...}">
希望对您有所帮助。
这是演示代码。
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<c:set var="day" scope="session" value="2"/>
<c:set var="curId" scope="session" value="456123"/>
<c:set var="day" scope="session" value="${day}_${curId}"/>
<c:set var="new_day" scope="session" value="2_456123"/>
<c:if test="${day eq new_day}">
Both are same.
</c:if>
打印:两者相同。
如果我将第 5 行更改为
<c:set var="new_day" scope="session" value="${2_456123}"/>
这是你发布的内容,然后我收到一条错误消息
包含无效表达式:javax.el.ELException:无法解析表达式 [${2_456123}]