有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

共 (2) 个答案

  1. # 1 楼答案

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

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

    随机值可用作sessionKey定义的集合的索引

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

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

    如果您的操作中有带有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]来获取它

    还可以选中this question以获取有关管理多个选项卡的会话数据的提示