0

我正在尝试在 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 
4

5 回答 5

1

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

于 2010-12-29T13:27:11.070 回答
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 参考

于 2010-12-29T15:03:06.663 回答
1

如果我没看错,那么值resToken实际上是会话属性的名称,对吧?所以,试试类似的东西:${sessionScope[resToken].bookingType}.

于 2010-12-29T14:36:01.627 回答
0

我已经得到了它的解决方案..

首先是设置 resToken

检查 setTest 测试 11 测试 11

于 2010-12-31T04:50:26.767 回答
0

'resToken' 不等于 resToken,后者是一个变量,您似乎希望第一个是字符串。

简单地写:

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

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

于 2010-12-30T01:57:18.200 回答