java将变量从action类(Struts 2)传递到JSP
使用Struts2和JSP的技术 在Jsp中,我检查会话值是否已设置
<s:if test="%{#session.sessionKey}">
现在我的Action类中有另一个随机变量rndmVar
(我无法在会话范围内设置此变量),现在,我的会话键将是sessionKey
变量加上rndmVar
值,那么如何在JSP中检查这个新的会话键呢
我想要像这样的东西
<s:if test="%{#session.sessionKey+rndmVar}"> //session key appended by rndmVar value.
第一个问题是如何将这个变量从action类传递到JSP,以及如何在JSP中检查它
我试过类似的东西
public String rndmVar;
public String getRndmVar() {
return rndmVar;
}
public void setRndmVar(String rndmVar) {
this.lang = lang;
}
而不是在action方法类中(此action方法类将重定向到JSP),我设置了这个随机变量的值
setRndmVar("rndmfdfkad");
我认为varrndmVar
是在值堆栈中添加的,可以使用OGNL访问。但这不起作用
现在,我将把值放在action类中的session对象中
String randomVar="fadfjk";
String newSessionKey="sessionKey"+randomVar;
session.put(newSessionKey,"value_part");
现在在Jsp中,我想检查是否设置了newSessionKey
变量。现在,我如何动态地将键值传递给JSP
<s:if test="#session['sessionKey' + rndmVar] != null">
上面的语法不起作用,事实上它总是给出null
并进入else循环
在我的动作课上
session.put("sessionKey"+rndmVar,"businessList"); //where businessList is ArrayList<BusinessLogicDTO> businessList
我能够在JSP中的scriplet标记中看到rndmVar
值
<% System.out.println(" Random var value passed from action class 2 JSP "+request.getParameter("rndmVar")); %>
# 1 楼答案
除非该值的类型为
Boolean
,否则无法检查该值是否设置为这样。相反,如果未设置该值,则它必须包含一个null
。然后你可以像这样检查它随机值可用作
sessionKey
定义的集合的索引例如,如果
sessionKey
是Map<String, Object>
,并且它被放入#session
中,则可以使用随机值检查对象# 2 楼答案
如果您的操作中有带有getter/setter的
rndmVar
字段,并且此页面是此特定操作的结果,那么您可以像在JSP中这样访问此变量要从会话中获取所需的值,请使用以下命令:
要从请求参数获取
rndmVar
值,请使用以下命令:注意
#parameters['some_key']
将返回字符串数组,因为它可以是请求中带有some_key
的多个参数。因此,如果需要此数组中的第一个参数,则需要使用[0]
来获取它还可以选中this question以获取有关管理多个选项卡的会话数据的提示