我正在尝试在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 <s:if tag
答案 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>
答案 3 :(得分:0)
'resToken'不等于resToken,后者是一个你似乎想要的变量,第一个是字符串。
简单地写一下:
<s:if test="%{#session[resToken].bookingType == 1}">
如果这不起作用,请使用属性标记输出表达式的较小部分以查看返回的内容。
答案 4 :(得分:0)
我已经找到了解决方案..
首先设置resToken
检查setTest 测试11测试11