gpt4 book ai didi

java - 在第二个 Action 中访问 Action 类变量

转载 作者:行者123 更新时间:2023-11-30 09:15:05 26 4
gpt4 key购买 nike

我的 Action 类中有两个方法 preprocess()getThresholdData() :

  • 我设置了一个 List<String> preprocess() 中的变量方法(在页面加载时调用);

  • 然后从 JSP 页面提交表单并 getThresholdData()叫做。

JSP:

<body>    
<s:form action="getThresholdDataConfigureTspThreshold">
<s:select list="tspNames" label="Select TSP:" name="tspName"></s:select>
<s:radio list="{'Default', 'Latest'}" label="Select Threshold type:"
name="thresholdType"></s:radio>
<s:submit value="Submit"></s:submit>
</s:form>
</body>

tspNames (要迭代的列表)在 preprocess() 中设置页面加载后立即执行操作类的方法,如下所示:

<a href="/gma/preprocessConfigureTspThreshold" /> 

Action 类:

public class ConfigureTspThresholdAction extends ActionSupport{
private static final String DISPLAY = "display";
private Map session;

private List<String> tspNames;
private List<String> thresholdParametres;

private String tspName;
private String thresholdType;

public String preprocess() {
// Get tspNames from server after Table creation
tspNames = new ArrayList<String>();
tspNames.add("RELIANCE");
tspNames.add("AIRTEL");
tspNames.add("TATA");
tspNames.add("BSNL");
tspNames.add("MTNL");
session.put("tspNames", tspNames);
return DISPLAY;
}

public String getThresholdData(){
// Get parametres from server after creating table
thresholdParametres = new ArrayList<String>();
thresholdParametres.add("1");
thresholdParametres.add("2");
thresholdParametres.add("3");
thresholdParametres.add("4");
thresholdParametres.add("5");
System.out.println("************" + tspNames);
return DISPLAY;
}
/** GETTER AND SETTERS*/
}

struts.xml:

<action name="*ConfigureTspThreshold"
class="gma.struts.ConfigureTspThresholdAction" method="{1}">
<result name="display">pages/ConfigureTspThresholdInput.jsp</result>
</action>

流程是:

  1. JSP 加载 preprocess在设置列表的地方调用。
  2. 用户填写并提交表单,一些工作在服务器端完成,用户重定向到同一个 JSP。

然而,错误出现是因为 JSP 无法显示为列表 tspNames这是在 preprocess() 中设置的方法来了null .

在这里,当我尝试打印列表时

System.out.println("************" + tspNames);

我在第一个函数中设置的值是 null .

为什么会这样?表单提交后变量值是否丢失?有没有用 session 概念做点什么?

最佳答案

您正在尝试重新发明轮子;你需要的是实现 Preparable Interface , 充分利用框架功能;

您的初始化代码将放在 prepare() 方法中(它类似于您自定义的 preprocess() 方法,但由框架管理,这是已知的它的):

Action class that implements this interface must override the prepare method. The prepare method will always be called by the Struts 2 framework's prepare interceptor whenever any method is called for the Action class and also when validation fails before the view is rendered.

您也不需要 session ,但这是您的选择。

关于java - 在第二个 Action 中访问 Action 类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20089382/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com