当前位置: 首页 > 知识库问答 >
问题:

将变量从action类(Struts 2)传递到JSP

山鸿彩
2023-03-14

使用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;
}

比在动作类的方法(这个动作类的方法将重定向到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")); %>

共有2个答案

施敏达
2023-03-14

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

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

可以使用随机值作为由sessionKey定义的集合的索引。

例如,如果sessionKey映射

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

索瀚海
2023-03-14

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

<s:property value="rndmVar"/>

要从会话中获取所需值,请使用以下内容:

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

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

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

请注意,#参数['some_key']将返回Strings数组,因为它可以是请求中带有some_key的多个参数。所以如果你想要这个数组中的第一个参数,你需要使用[0]来获取它。

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

 类似资料:
  • 问题内容: 我阅读了有关通配符映射的struts手册,并决定亲自测试一些示例。我有一个动作指向: 这使我可以走过去的任何地方,并尽我所能查看。因此,我现在想去的是,然后我要让类中的方法获取URL字段,并按名称和姓氏在数据库中进行搜索,然后填充将在 我关心的不是搜索功能,而是从方法中检索URL中的字段。如何从URL中检索和在方法中使用它? 我正在使用 Struts 2.1.8.1 问题答案: 方法1

  • 问题内容: 我想根据例如从jenkins传递的变量来运行测试用例,请选择要运行的测试用例:testcaseOne,testcaseTwo 在pom.xml(maven)中: 我有两个testng @test方法: 还有我的testng.xml文件: 如何根据我要运行的测试数量和数量来传递此参数?也许有完全不同的方式来做到这一点? 问题答案: 您可以在testng.xml文件http://testn

  • 问题内容: 我看过类似的论坛,但无法获得任何有效的解决方案。我正在尝试将变量从Flask传递到我的JavaScript文件。这些值将用于我的JavaScript文件中的PubNub。 这是我的Python代码的一部分: 这是我的JavaScript代码(app.js)的一部分: 如果我在Settings.html文件中使用了此代码,而在app.js文件中却没有使用,则此代码有效。 问题答案: 该m

  • 问题内容: 我正在使用Google Maps制作可以加载数据库中包含经纬度数据的标记的地图。我希望用户可以通过单击按钮来加载三个不同的“图层”。单击该按钮时,将在服务器上执行php函数,从而根据数据库中的信息创建xml文件。然后调用AJAX函数提取此xml数据,然后将其用于创建地图标记。没有为每个“层”使用单独的PHP函数(除了SQL查询所在的行,这是相同的东西),有没有办法将AJAX中的java

  • 问题内容: 我似乎无法从php中将变量传递给我的bash脚本。无论我如何尝试,$ uaddress和$ upassword都变为空。 *_ __ _ __ __ * __ __ bash * __ __ * * ** *_ __ _ __ * PHP __ * __ __ * __ ** *_ __ _ _ _输出和调试 _ _ _ * *_ 问题答案: 您需要将变量作为参数传递给Shell脚本,

  • 问题内容: 我正在尝试将变量从node.js传递到我的HTML文件。 问题答案: 我发现我可以传递这样的变量