В моем проекте Spring MVC у меня есть страница обновления для Class1, на которой должен отображаться список формы: теги-флажки, связанные с коллекцией объектов в Class1.
Class1.java:
class Class1 {
private Set<Class2> set;
//... other fields
}
В updateclass1.jspx:
<c:forEach items="${allClass2Instances}" var="class2">
<form:checkbox label="${class2.name}" path="set" value="${class2}"/><br/>
</c:forEach>
С тегом-флажком, как указано выше, при отображении страницы флажок отмеченесли экземпляр Class2 является частью Set для class1, и не отмечен, если это не так.Но когда я нажимаю «отправить», я получаю следующую ошибку:
Failed to convert property value of type 'java.lang.String[]' to required type 'java.util.Set' for property 'set'; nested exception is org.springframework.core.convert.ConversionFailedException: Unable to convert value "Name 1" from type 'java.lang.String' to type 'java.lang.Long'; nested exception is java.lang.NumberFormatException: For input string: "Name1"
Насколько я могу судить, когда страница заполнена, тегу form: checkbox нужен экземпляр, чтобы установить правильное проверенное / непроверенное значение,но при отправке JSP отправляет массив значений class2.toString () преобразователю, который ожидает идентификаторы.И наоборот, когда я изменяю тег на следующий:
<form:checkbox label="${class2.name}" path="set" value="${class2.id}"/><br/>
Привязка работает нормально, но когда я просматриваю страницу обновления, флажки не отмечены / не отмечены правильно, потому что тег не знает, что значение передается вявляется идентификатором объекта.
Как сделать привязку после отправки согласованной с тем, что ожидает тег checkbox?
В случае, если это имеет значение - все это внутри страницы скаффолдинга, сгенерированной Roo.