如何在struts2中获取动态会话对象

时间:2010-12-29 13:11:53

标签: java session struts2 ognl

我正在尝试在struts2应用程序中获取动态会话对象。

<s:if test="%{#session['resToken'].bookingType == 1}">

resToken可以通过<s:property value="%{resToken}">..

获取

但我不能写<s:property> within <s:if test="">

它给我双引号的错误..

org.apache.jasper.JasperException: /WEB-INF/jsp/booking/banquet/guest-Info-View.jsp(150,40) Unterminated &lt;s:if tag 

5 个答案:

答案 0 :(得分:1)

你不能使用${sessionScope.resToken.bookingType == 1}

答案 1 :(得分:1)

如果我正确阅读,那么resToken的值实际上是会话属性的名称,对吧?所以,尝试类似:${sessionScope[resToken].bookingType}

答案 2 :(得分:1)

尝试在<s:property/>标记内放置<s:if/>标记不是正确的方法。两个标记都将OGNL表达式作为参数。因此,如果%{resToken}适用于一个,它也适用于另一个。

话虽如此,%{#session['resToken'].bookingType}看起来是正确的。你有没有尝试输出它的值来看它是什么?您也可以使用%{#session.resToken.bookingType}。首先确定您正确引用会话变量,然后确保该值确实== 1。

或者您可以像其他人一样使用JSTL / JSP EL并使用:

// i don't remember off the top of my head if it should be == or eq
<c:if test="${sessionScope.resToken.bookingType eq 1}"></c:if>

OGNL Reference

答案 3 :(得分:0)

'resToken'不等于resToken,后者是一个你似乎想要的变量,第一个是字符串。

简单地写一下:

<s:if test="%{#session[resToken].bookingType == 1}">

如果这不起作用,请使用属性标记输出表达式的较小部分以查看返回的内容。

答案 4 :(得分:0)

我已经找到了解决方案..

首先设置resToken

检查setTest     测试11测试11