Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在struts2中动态获取会话对象_Java_Session_Struts2_Ognl - Fatal编程技术网

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

Java 如何在struts2中动态获取会话对象,java,session,struts2,ognl,Java,Session,Struts2,Ognl,我正在尝试在struts2应用程序中动态获取会话对象 <s:if test="%{#session['resToken'].bookingType == 1}"> 你不能使用${sessionScope.resToken.bookingType==1}你不能使用${sessionScope.resToken.bookingType==1}如果我读对了,那么resToken的值实际上是会话属性的名称,对吗?因此,可以尝试这样的方法:${sessionScope[resToken].b

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

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

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

你不能使用
${sessionScope.resToken.bookingType==1}
如果我读对了,那么
resToken
的值实际上是会话属性的名称,对吗?因此,可以尝试这样的方法:
${sessionScope[resToken].bookingType}
如果我读对了,那么resToken的值实际上是会话属性的名称,对吗?因此,尝试类似的方法:
${sessionScope[resToken].bookingType}

尝试将
标记放在
标记内不是正确的方法。两个标记都使用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>
//我不记得是==还是eq

尝试将
标记放在
标记内不是正确的方法。两个标记都使用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>
//我不记得是==还是eq

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

简单地写下:

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


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

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

简单地写下:

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


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

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

首先是重新开始

支票寄存 测试11测试11
我已经得到了它的解决方案

首先是重新开始

支票寄存 测试11测试11

我不确定我给出的EL答案的等效OGNL符号是什么,但我认为需要首先计算
resToken
,而不是将其用作文本属性名称。您可以在EL和OGNL中链接属性,如
sessionScope.resToken.bookingType
。您应该注意空值,但支持链接。明白。再一次,也许我误解了这个问题,但是(EL)
sessionScope.resToken
sessionScope[resToken]
@kschneid:事实上,我认为我误解了这个问题。我不确定我给出的EL答案的等效OGNL符号是什么,但是我认为,
resToken
需要首先进行计算,而不是用作文本属性名。您可以在EL和OGNL中链接诸如
sessionScope.resToken.bookingType
之类的属性。您应该注意空值,但支持链接。明白。再一次,也许我误解了这个问题,但是(EL)
sessionScope.resToken
sessionScope[resToken]
@kschneid:事实上,我认为我误解了这个问题。没有把所有的答案读得足够好。我的答案和你的一样,你的答案排在第一位。没有把所有的答案都读得足够好。我的答案和你的一样,你的答案排在第一位。