In meinem Spring MVC-Projekt habe ich eine Update-Seite für Class1, die eine Liste der Kontrollkästchen format: checkbox anzeigen muss, die an eine Auflistung von Entitäten in Class1 gebunden ist .Spring MVC Checkbox-Tag an die Sammlung gebunden erwartet Objekt, aber Validierung erwartet object.id
Class1.java:
class Class1 {
private Set<Class2> set;
//... other fields
}
In updateclass1.jspx:
<c:forEach items="${allClass2Instances}" var="class2">
<form:checkbox label="${class2.name}" path="set" value="${class2}"/><br/>
</c:forEach>
Mit dem Checkbox-Tag, wie oben, wenn ich die Seite anzuzeigen, wird das Kontrollkästchen aktiviert, wenn die Klasse 2 Instanz Teil ist von Set für Klasse1 und nicht aktiviert, wenn dies nicht der Fall ist. Aber wenn ich einreichen Hit, erhalte ich folgende Fehlermeldung:
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"
Soweit ich sagen kann, wenn die Seite ausgefüllt ist, das Formular: Checkbox-Tag muss eine Instanz den korrekten aktiviert/deaktiviert Wert zu setzen, sondern auf Senden Die JSP sendet ein Array von class2.toString() - Werten an einen Konverter, der die IDs erwartet. Im Gegensatz dazu, wenn ich den Tag wie folgt ändern:
<form:checkbox label="${class2.name}" path="set" value="${class2.id}"/><br/>
Die Bindung funktioniert gut, aber wenn ich die Update-Seite sehen die Kontrollkästchen nicht aktiviert/unticked richtig, weil der Tag nicht diesen Wert nicht kennen weitergegeben wird, ist die Objekt Identifikation.
Wie mache ich die Bindung nach dem Senden konsistent mit dem, was das Checkbox-Tag erwartet?
Wenn es darauf ankommt - das ist alles in einer Gerüst-Seite von Roo generiert.