所以我设置了一个带有spring web flow的向导界面,逐渐填充单个表单对象/模型。它适用于必须填充单个字符串或原始属性和字符串数组(来自复选框界面)的前几个步骤。
然后我有一个List<String>
财产。它正确地呈现为具有正确初始化值的多个文本框。但是当我在浏览器上编辑文本框并提交时,这些值不会在表单 bean 上生效。它仍然具有初始值。
下面是详细的设置:
创建 bean 的 Web 流启动:
<on-start>
<evaluate expression="new mypackage.MyFormBean()" result="flowScope.myFormBean" />
</on-start>
以下是我的表单 bean 的相关部分:
public class MyFormBean implements Serializable {
...
private List<SlotBean> slots;
...
public List<SlotBean> getSlots() {
return slots;
}
public void setSlots(List<SlotBean> slots) {
this.slots= slots;
}
...
}
public class SlotBean {
...
private int quantity;
...
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity= quantity;
}
...
}
我的 Web 流程中有一系列视图状态,其中设置了简单的字符串或数字字段绑定,这些绑定设置已初始化、显示和保存,不会对表单产生任何问题。
此视图状态生成任意数量的 SlotBean 对象,然后将数量初始化为 2。这些设置为 slot 属性。
<view-state id="generate-criteria" model="disciplineCatalogue">
...
<transition on="next" to="slots-grid">
<evaluate expression="myService.generateSlots(myFormBean)"/>
</transition>
...
</view-state>
这是jsp片段。它所做的只是渲染一堆文本框。还有一个下一步按钮:
<form:form id="slotsGrid" modelAttribute="myFormBean" action="${flowExecutionUrl}">
...
<c:forEach var="slot" items="${myFormBean.slots}" varStatus="idx">
<form:input path="slots[${idx.index}].quantity" />
</c:forEach>
...
<button type="submit" id="next" name="_eventId_next">Next</button>
...
</form:form>
上面的代码使用初始值 (2) 正确显示。它生成多个文本框,如下所示:
<input id="slots0.quantity" name="slots[0].quantity" type="text" value="2"/>
因此,当此页面在浏览器上时,我将数量文本框的值更改为不同的值,然后单击“下一步”按钮。在浏览器的网络调试器上,我看到表单值已发送到服务器:
slots[0].quantity:3
slots[1].quantity:1
slots[2].quantity:2
这是下一个按钮的相关 Web 流程条目。
<view-state id="slots-grid" model="myFormBean">
<binder>
...
<binding property="slots" />
</binder>
...
<transition on="next" to="finished">
<evaluate expression="myService.create(myFormBean)"/>
</transition>
...
</view-state>
所以我在方法上放了一个断点myService.create(myFormBean)
,它显示所有数量字段仍然设置为原来的“2”。新值未绑定到myFormBean.slots
.
你能在我的设置中看到什么看起来不对的地方吗?
感谢您随时可以投入其中
Spring 框架 3.1.1
Spring-Webflow 2.3.1
雄猫 6.0.18
日蚀靛蓝
交叉张贴在: http: //forum.springsource.org/showthread.php?127809 -Collection-List-property-won-t-bind-or-update-on-form-submit