3
我正在努力尋找有關List對象的Spring表單(包括驗證)的良好信息,特別是當與選擇框或複選框無關時等Spring 3與java.util.List綁定的MVC表單,包括表單錯誤和使用bindingResult驗證
我希望有一個形式對象像:
public class MyForm {
private List<String> values;
public List<String> getValues() { return this.values; }
public void setValues(List<String> values) { this.values = values; }
}
JSP:
<form:form method="post" action="${pageContext.request.contextPath}/something" commandName="myForm">
...
<c:forEach var="unused" items="${myForm.values}">
<div><form:input path="values" /><form:errors path="values" /></div>
</c:forEach>
...
</form:form>
控制器:
...
for (String value : myForm.getValues()) {
if (! isValidCode(value)) {
bindingResult.rejectValue("values", "invalid.code", "Code unknown!");
}
}
...
當我提交表單時,我可以看到輸入的值正確地通過java.util.List。
當表單被再次呈現: 一個)每個輸入字段具有相同的值(最後的值輸入的),和 B)形式:錯誤示出了用於每一個領域,包括有效值的多個錯誤消息。
是否有什麼問題,我如何c:forEach遍歷列表,導致每個輸入字段獲得相同的值?
是否有可能做這樣的事情:
if (! isValidCode(value)) {
bindingResult.rejectValue("values[" + i + "], "invalid.code", "Code unknown!");
}
和:
<c:forEach var="unused" items="${values}" varStatus="status">
<div><form:input path="values" /><form:errors path="values[${status.index}]" /></div>
</c:forEach>
具體地說,這是不行的,我已經嘗試了一些變化形式並不能似乎得到它的工作 - 任何想法/幫助將不勝感激!
謝謝。