JSTL字符串比较总是返回false

use*_*755 10 java jsp jstl

我正在尝试字符串比较

<c:if test="${dept eq 'account'}"></c:if>
Run Code Online (Sandbox Code Playgroud)

但这总是会回归false.我检查dept变量是否有值'account'.我也是这样试过的

<c:if test="${dept == 'account'}"></c:if> 
Run Code Online (Sandbox Code Playgroud)

这也回来了false.

但是,如果我使用这样的java代码,那么它工作正常

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

blah blah blah
}

%>
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激.

谢谢

Bal*_*usC 13

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

request.setAttribute("dept", dept);
Run Code Online (Sandbox Code Playgroud)

这样它就可以在EL中使用了${dept}.

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