如何比较jsp / jstl的foreach循环中的两个字符串?

时间:2016-05-09 04:19:01

标签: spring jsp jstl

我需要与foreach循环中的字符串进行比较。

我的开发环境:

1)MAC 10.11,

2)STS版本:3.7.3.RELEASE

4)Spring Web 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}">

有人可以给任何指针吗?

谢谢&amp;的问候,

Arun Dhwaj

2 个答案:

答案 0 :(得分:1)

最有可能的问题是由以下作业引起的

IF

使用上面的行,您将为var <c:set var="day" scope="session" value="${day}_${curId}"/> 分配一个值,该值来自另一个具有相同名称但不一定具有相同day的变量。换句话说,您可能已经有一个名为scope的变量,它位于另一个范围内。

默认范围是页面范围,因此,如果在页面或请求范围中检索到名称为day的变量,则按顺序请求,会话和应用程序执行测试时将考虑变量,并且将忽略您在会话范围中定义的变量。

您有两个选择

  1. 更改会话范围中定义的变量的名称,并在执行测试时使用该名称

    day
  2. 指定c:if标记

    中使用的变量的范围
    <c:set var="niceday" scope="session" value="${day}_${curId}"/>
    
    <c:if test="${niceday eq ...}">
    
  3. 希望有所帮助。

答案 1 :(得分:1)

这是演示代码。

<%@ 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.E​​LException:无法解析表达式[$ {2_456123}]