Java 将变量从action类(struts2)传递到JSP

Java 将变量从action类(struts2)传递到JSP,java,jsp,session,struts2,ognl,Java,Jsp,Session,Struts2,Ognl,使用Struts2和JSP的技术 在Jsp中,我检查会话值是否已设置 <s:if test="%{#session.sessionKey}"> 第一个问题是如何将这个变量从action类传递到JSP,以及如何在JSP中检查它 我试过类似的东西 <s:if test="%{#session.sessionKey+rndmVar}"> //session key appended by rndmVar value. public String rndmVar; publ

使用Struts2和JSP的技术 在Jsp中,我检查会话值是否已设置

<s:if test="%{#session.sessionKey}">
第一个问题是如何将这个变量从action类传递到JSP,以及如何在JSP中检查它

我试过类似的东西

<s:if test="%{#session.sessionKey+rndmVar}">  //session key appended by rndmVar value.
public String rndmVar;
public String getRndmVar() {
  return rndmVar;
}
public void setRndmVar(String rndmVar) {
  this.lang = lang;
}
而在action方法类(这个action方法类将重定向到JSP)中,我设置了这个随机变量值

setRndmVar("rndmfdfkad");
我认为var
rndmVar
是在值堆栈中添加的,可以使用OGNL访问。但这不起作用

请给出您的观点,非常感谢您的帮助。请尽量说清楚一点,我对这个问题缺乏想法,甚至听起来像是一个经典问题:我花了好几个小时试图解决这个问题,但却一事无成

现在,我将把值放在action类中的session对象中

String randomVar="fadfjk";
String newSessionKey="sessionKey"+randomVar;
session.put(newSessionKey,"value_part");
现在在Jsp中,我想检查是否设置了newSessionKey变量。现在,我如何动态地将键值传递给JSP

@阿列克山德M

<s:if test="#session['sessionKey' + rndmVar] != null">

上面的语法不起作用,事实上它总是给出null并进入else循环

在我的动作课上

session.put("sessionKey"+rndmVar,"businessList"); //where businessList is ArrayList<BusinessLogicDTO> businessList
session.put(“sessionKey”+rndmVar,“businessList”)//其中businessList是ArrayList businessList
我能够在jsp中的scriplet标记中看到rndmVar值

<% System.out.println(" Random var value passed from action class 2 JSP "+request.getParameter("rndmVar")); %>

除非值的类型为
布尔值,否则无法检查该值是否设置为这样。相反,如果未设置该值,则该值必须包含一个
null
。然后你可以像这样检查它

<s:if test="#session.sessionKey != null">

如果您的操作中有带有getter/setter的
rndmVar
字段,并且此页面是此特定操作的结果,那么您可以像在JSP中这样访问此变量

<s:property value="rndmVar"/>
注意
#parameters['some_key']
将返回字符串数组,因为它可以是请求中带有
some_key
的多个参数。因此,如果需要此数组中的第一个参数,则需要使用
[0]
获取它


另外,请检查以获取有关管理多个选项卡的会话数据的提示。

…请查看编辑的secion,因为我无法澄清我的问题。您可以使用getter从操作中获取键值,但最好使用sessionKey映射并使用键访问它,而不是使用随机会话变量。Hi s:property prints value为success为什么我没有收到Hi Message看一下这个问题:。在验证答案是否有效之前,您不应该接受答案。将
放入jsp中,查看它打印的内容。这意味着您没有设置
rndmVar
在您的操作中。请求参数与S2值堆栈不同。
<s:property value="rndmVar"/>
<s:if test="#session['sessionKey' + rndmVar] != null">
<s:if test="#session['sessionKey'+ #parameters['rndmVar'][0]]">