JSTL字符串比较总是返回false

时间:2010-11-16 16:26:19

标签: java jsp jstl

我正在尝试与

进行字符串比较
<c:if test="${dept eq 'account'}"></c:if>

但这总是会返回false。我检查dept变量的值是'account'。我也试过这个

<c:if test="${dept == 'account'}"></c:if> 

这也会返回false

但是如果我像这样使用java代码那么它可以正常工作

<%
if(dept.equals("account")){

blah blah blah
}

%>

任何帮助都会非常感激。

由于

1 个答案:

答案 0 :(得分:13)

症状表明您已在 scriptlet 范围内声明它,而不是在EL范围中声明它。 Scriptlets 和EL不共享相同的范围。 EL使用封面PageContext#findAttribute()来解析变量。将dept放在页面,请求,会话或应用程序范围之一中。选择哪一个取决于dept本身的唯一目的。我从请求范围开始。例如。在servlet中:

request.setAttribute("dept", dept);

这样,${dept}就可以在EL中找到它。

毕竟,最好是避免使用 scriptlet completely。 Java代码属于Java类,而不属于JSP文件。