Я изо всех сил пытаюсь найти хорошую информацию о формах Spring (включая проверку) с объектами List, особенно когда они не связаны с полями выбора или флажками и т. Д.
Мне нужен объект формы, такой как:
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,
При повторной визуализации формы: a) каждое поле ввода имеет одинаковое значение (последнее введенное значение), и b) форма: errors отображает несколько сообщений об ошибках для каждого поля, включая допустимые значения.
Есть ли что-то не так с тем, как цикл 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>
Это специально не работает, и я попробовал несколько вариантов этого и, похоже, не могу заставить его работать - любые идеи / помощь будут очень полезныоценил!
Спасибо.