2010-11-16 99 views
10

我想字符串比较JSTL字符串比较总是返回false

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

但这总是返回false。我检查部门变量的值为'account'。我也试过这样

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

这也返回false

但是,如果我用Java代码这样即可正常工作

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

blah blah blah 
} 

%> 

任何帮助将非常感激。

感谢

+0

你是什么意思的“返回false”。你确定你的''标签实际上正在执行吗? – skaffman 2010-11-16 16:44:34

回答

13

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

request.setAttribute("dept", dept); 

这样它会提供EL通过${dept}

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

+0

非常棒!这是一个完美的答案。非常感谢您的时间。这工作正常。我认为EL无法在任何范围内找到部门变量。只要我把它放在请求范围内,它就能正常工作。 – user509755 2010-11-16 18:13:33

+0

不客气。 – BalusC 2010-11-16 18:14:47