尝试在jsp中打印会话变量会导致错误“等于预期”

时间:2010-10-11 14:32:16

标签: java jsp

我正在尝试将会话对象中的值传递给自定义标记<l:LoginStatus userId="<% out.print((String)session.getAttribute("userId")); %>"/>

为什么这一行会给我错误:
org.apache.jasper.JasperException:/index.jsp(1,1)/header.jsp(64,131)等于符号

当我传递像<l:LoginStatus userId="4"/>

这样的硬编码值时

一切正常。

这对我没有任何意义,我认为使用out.print会使=无法成功。

3 个答案:

答案 0 :(得分:3)

另一种方法是使用EL。这样可以产生更清晰的代码。

<l:LoginStatus userId="${userId}" />

答案 1 :(得分:2)

应该是:

<%= (String)session.getAttribute("userId") %>

一般来说,以这种方式做事情要好得多,而不是直接写入页面。此外,事情并不像你认为的那样完全正常。

答案 2 :(得分:0)

当您打印表达式的值时,您应该将语句设为

<l:LoginStatus userId="<%=out.print((String)session.getAttribute("userId"))%>"/>

<l:LoginStatus userId="<%=out.print(session.getAttribute("userId")).toString()%>"/>