【发布时间】:2015-10-07 03:44:56
【问题描述】:
面临将值从我的 html 表单传递到操作类的问题。创建了一个示例项目来测试功能并在此处遇到相同的问题。我有以下课程:
TestBean
package com.struts2test.beans;
public class TestBean {
private String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
TestBeanHolder
package com.struts2test.beans;
import java.util.List;
import java.util.Map;
public class TestBeanHolder {
private Map<Integer, TestBean> testBeanMap;
private List<TestBean> testBeanList;
private Map<Integer, List<TestBean>> testBeanListMap;
public Map<Integer, TestBean> getTestBeanMap() {
return testBeanMap;
}
public void setTestBeanMap(Map<Integer, TestBean> testBeanMap) {
this.testBeanMap = testBeanMap;
}
public Map<Integer, List<TestBean>> getTestBeanListMap() {
return testBeanListMap;
}
public void setTestBeanListMap(Map<Integer, List<TestBean>> testBeanListMap) {
this.testBeanListMap = testBeanListMap;
}
public List<TestBean> getTestBeanList() {
return testBeanList;
}
public void setTestBeanList(List<TestBean> testBeanList) {
this.testBeanList = testBeanList;
}
}
测试操作
package com.struts2test.action;
import com.opensymphony.xwork2.ActionSupport;
import com.struts2test.beans.TestBeanHolder;
public class TestAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private TestBeanHolder testBeanHolder;
public TestBeanHolder getTestBeanHolder() {
return testBeanHolder;
}
public void setTestBeanHolder(TestBeanHolder testBeanHolder) {
this.testBeanHolder = testBeanHolder;
}
public String execute() throws Exception {
return SUCCESS;
}
}
当我的 url 是 http://localhost:8080/Struts2Test/test?testBeanHolder.testBeanMap[0].value=1 时,我的操作的 testBeanHolder.testBeanMap 将填充有 0 的键映射到带有 value=1 的 TestBean 实例。
当 url 为 http://localhost:8080/Struts2Test/test?testBeanHolder.testBeanList[0].value=1 时,testBeanHolder.testBeanList 将填充有 TestBean 和 value=1 的单个实例。
我尝试填充testBeanHolder 的testBeanListMap 属性但不起作用。 testBeanListMap 已创建但为空。这是我正在尝试的 URL http://localhost:8080/Struts2Test/test?testBeanHolder.testBeanListMap[0][0].value=1
【问题讨论】:
-
问题在于新对象实例的创建。使用一些更简单的结构。