Struts逻辑:迭代输入字段

我目前有以下代码,数据显示正常。

             

但现在我需要使“数量”部分可以修改。 用户应该能够更新该字段,按提交,当它发送到服务器时,“myList”应该自动更新新的数量。

我试过在这方面寻求帮助,但我一直在寻找的只是如何显示数据的示例,而不是修改它。 任何帮助,将不胜感激。

所以这很棘手,因为有很多事情需要完成才能使它工作。 首先,使用html标签在迭代器中声明你的标签,属性为INDEXED = TRUE,ID不同于名称,我还取出了“indexId”属性,为索引使用简单的“索引”字:

             

之后,为了使struts能够获取和设置bean的属性,您需要使用在iterate标记的id中编写的名称在集合对象中声明EXTRA get和set方法。 在这种情况下,您将为“myListI”编写2个额外的get和set方法:

 public void setMyListI(int index, myBean value){ this.myList.add(value); } public myBean getMyListI(int index){ return this.myList.get(index); } 

我认为Th0rndikes的回答大多是正确的。 我的实现略有不同,所以也可能值得尝试。

形成

 private List activeParameters; public List getActiveParameters() { return activeParameters; } public Parameter getParam(int index){ return this.activeParameters.get(index); } 

JSP

       

总之,我没有在iterate标签中使用Type,而是使用属性标签。 在bean中添加一个与JSP(param)中的迭代ID名称匹配的getter,并使用索引作为方法参数。

从理论上讲, struts html标签的indexed属性可用于此:

仅在logic:iterate内部有效logic:iterate标记。 如果为true,则html标记的名称将呈现为“id [34] .propertyName”。 括号中的数字将为每次迭代生成,并从祖先逻辑:iterate标记中获取。

但是, html:errors标签上没有相应的indexed属性,这限制了它的用途。 此外, idnameproperty属性的必需组合可能相当混乱。

我发现使用jsp scriptlet生成包含迭代索引的属性名称更容易。 以下代码要求您的表单具有字符串数组属性“quantity”。

 <% int idx=0; %>    <% i++; %>  

看看这个: http : //wiki.apache.org/struts/StrutsCatalogLazyList

索引属性

Struts html标签有一个索引属性,它将生成适当的html,以在提交表单时填充bean的集合。 诀窍是将id属性命名为与 索引属性 相同

例如以下jsp ……

     

…将生成以下HTML

   ....  

提交表单时,BeanUtils将首先调用getSkills(index)方法来检索索引的bean,然后在检索到的bean上检索setSkillId(..)。