我希望在我的 JSP 页面上显示项目列表,每个项目都有一个空白文本字段来填写金额,一旦我填写了所需的项目金额,我将提交。
我有ExampleAction
如下课程,其中我有 populate() 方法,我首先触发该方法以便填充项目。我开火网址:
http://localhost:8084/WebExample/populate.action.
同样ExampleAction
已经执行 mtd,我从 JSP 页面调用 SUBMIT 按钮操作。但我的问题在于执行方法,我无法获取列表中的对象,即 exList。这是因为动作类的一个实例只与一个请求相关联吗?当我通过 SUBMIT 按钮触发另一个动作时,是否关联了不同的值堆栈?如果是,对我来说,在执行()方法中检索输入的那些金额(在 JSP 中)以在 Tomcat 的控制台中打印的最佳方法应该是什么?
示例动作:
private ArrayList<EX> exList;
private EX ex;
public ExampleAction(){
exList = new ArrayList<EX>();
}
//Getters And Setters.
@Override
public String execute() throws Exception {
for (EX ex1 : exList) {
System.out.println("ex1 = " + ex1.getName());
}
return SUCCESS;
}
public String populate() throws Exception{
System.out.println("in populate");
exList.add(new EX("Item 1",0.0f));
exList.add(new EX("Item 2",0.0f));
![enter image description here][2]...
...
return SUCCESS;
}
EX.类:
class EX {
private String name;
private float amt;
public EX(String name, float amt) {
this.name = name;
this.amt = amt;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getAmt() {
return amt;
}
public void setAmt(float amt) {
this.amt = amt;
}}
例子.jsp:
<form action="ex">
<div style="overflow: auto;height: 200px;width: 400px; border: black solid;border-style: double;">
<table border="1">
<tr>
<td>Name</td>
<td>Amt</td>
</tr>
<s:iterator value="exList" var="ex">
<tr>
<td><s:property value="name"/></td>
<td><s:textfield cssClass="num" onchange="calculateSum()"/></td>
</tr>
</s:iterator>
</table>
</div>
<br>
Sum : <s:textfield cssClass="ssum" disabled="true"/>
<br>
<s:submit action="ex" value="SUBMIT"/>
</form>
Struts.xml:
<package name="default" extends="struts-default" namespace="/">
<action name="populate" class="com.ex.register.ExampleAction" method="populate">
<result name="success">/register/example.jsp</result>
</action>
<action name="ex" class="com.ex.register.ExampleAction" method="execute">
<result name="success">/register/example.jsp</result>
</action> </package></struts>