【发布时间】:2015-04-03 13:58:25
【问题描述】:
使用的技术 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.
第一个问题如何将这个变量从动作类传递给 JSP,然后我将如何在 JSP 中检查它。
我试过类似的东西
public String rndmVar;
public String getRndmVar() {
return rndmVar;
}
public void setRndmVar(String rndmVar) {
this.lang = lang;
}
在action类的方法中(这个action类的方法会重定向到JSP。),我设置了这个随机变量值。
setRndmVar("rndmfdfkad");
我认为 var rndmVar 已添加到值堆栈中,并且可以使用 OGNL 访问。但这不起作用。
现在我将值放入操作类中的会话对象中。
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")); %>
【问题讨论】:
-
在您确认答案有效之前,您不应接受答案。
-
把
<s:property value="rndmVar"/>和<s:property value="#session['sessionKey' + rndmVar]"/>放到你的 jsp 中,看看它会打印什么。 -
表示你的action中没有设置
rndmVar。 -
请求参数与 S2 值堆栈不同。
标签: java jsp session struts2 ognl