繁体   English   中英

将变量从操作类(struts2)传递到JSP

[英]passing variable from action class(struts2) to 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.

第一个问题是如何将变量从操作类传递到JSP,然后如何在jsp中对其进行检查。

我尝试过类似的东西

public String rndmVar;
public String getRndmVar() {
  return rndmVar;
}
public void setRndmVar(String rndmVar) {
  this.lang = lang;
}

比动作类的方法(此动作类的方法将重定向到JSP。),我设置了此随机变量值。

setRndmVar("rndmfdfkad");

我认为var rndmVar已添加到值堆栈中,并且可以使用OGNL进行访问。 但这没用。

请提供您的意见,我们将不胜感激,在这个问题上我什至缺乏想法,甚至听起来像是经典的:我已经花了很多时间尝试解决这个问题,但是却一无所获。

现在我将值放在动作类的会话对象中。

String randomVar="fadfjk";
String newSessionKey="sessionKey"+randomVar;
session.put(newSessionKey,"value_part");

现在在Jsp中,我想检查是否设置了newSessionKey变量。 现在如何将键值动态传递给JSP。

@Aleksandr M ...

<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")); %>

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

<s:property value="rndmVar"/>

要从会话中获得所需的值,请使用以下命令:

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

要从请求参数获取rndmVar值,请使用以下命令:

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

请注意,# #parameters['some_key']将返回字符串数组,因为请求中的some_key可以使用多个参数。 因此,如果要此数组中的第一个参数,则需要使用[0]来获取它。

还请检查此问题以获取有关管理多个选项卡的会话数据的提示。

您不能检查这样设置的值,除非该值是Boolean类型。 相反,如果未设置值,则必须包含null 那你可以这样检查

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

可以将一个随机值用作sessionKey定义的集合的索引。

例如,如果sessionKeyMap<String, Object>并将其放入#session则可以使用随机值检查对象

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM