2016-03-28 22 views
0

我与this后沿之后在Struts中1.创建动态表单到目前为止,我已经在我的ActionForm的设置我的包含HashMap阅读在进入这样的数据:如何在Struts 1中映射和读取我的动态表单条目?

public int getCount2() { 
     return count2; 
    } 

    public void setCount2(int count) { 
     this.count2 = count2; 
    } 

    public Map getChildObjects(){ 
     return childObjects; 
    } 

    public void setChild(String key, Object child){ 
     childObjects.put(key, child); 
    } 

    public Object getChild(String key){ 
     return childObjects.get(key); 
    } 

我也在此地图键和值在JSP函数中。

var elementCount = parseInt(document.getElementById("count2").value); 

    var textFirstName = document.createElement("input"); 
     ... 
     textFirstName.setAttribute("name","childObjects(FirstName"+ elementCount +")"); 
     ... 

我有隐藏字段“共2个记录”在HTML中声明,我没有JSP的错误来了,当我加载页面或添加这些文档元素的任何问题,但是当我尝试读取表格数据,即使当我填写这些值时,映射回来也是空的。

如何将这些数据读入我的地图,然后在提交我的动作时读回它们?

回答

0

我通过例如去了,但不明白命名的DOM元素如何不同的分配与单个名称,I,E是一个HashMap,如果有:

<input type="text" name="name1" /> 
<input type="text" name="name2" /> 

然后行动文件需要2个变量按名称NAME 1和NAME,但如果你可以创建一个同名I,E DOM元素:

<input type="text" name="testVal" /> 
<input type="text" name="testVal" /> 

然后在行动文件,你可以创建一个string[] testVal数组变量,你将不得不在填充所有的输入值。

纠正我,如果我用HashMap的方式错了。

编辑:

真,你将不能够识别每一个元素,并通过它在发布代码越来越命名方式,我不认为这是可能的:

childObjects(FirstName"+ elementCount +"); 

尝试这样做:

childObjects[elementCount]; 

更换() with [],并删除firstName前缀与指数一起。

应该按名称childObjects将其分配给HashMap。

这在Struts 2中起作用。假设它应该在struts 1中工作。

+0

如果你这样做,如果你使用键控hashmap,你应该如何识别每个输入值? – Zibbobz

+0

请参阅编辑答案。 –