Ich habe ein Modell, das eine Liste der Länder (Liste) und ein Benutzerobjekt enthält, das ein Land-Objekt enthält. Ich bin der Ansicht, dass der Benutzer sein Land auswählen kann.
Dies ist Schnipsel meiner jsp Seite:Feder-Mvc-Formular: Tag auswählen
<form:select path="user.country">
<form:option value="-1">Select your country</form:option>
<form:options items="${account.countries}" itemLabel="name" itemValue="id" />
</form:select>
Das ist mein Konto Modell:
public class Account {
private User user;
private List<Country> countries;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public List<Country> getCountries() {
return countries;
}
public void setCountries(List<Country> countries) {
this.countries = countries;
}
}
Wenn die jsp Lasten (GET) die Form: select zeigt das ausgewählte Element des aktuellen Benutzers Land. Das Problem ist, dass wenn ich das Formular poste ich diese Ausnahme bekomme:
Field error in object 'account' on field 'user.country': rejected value [90];
codes [typeMismatch.account.user.country,typeMismatch.user.country,typeMismatch.country,typeMismatch.org.MyCompany.entities.Country,typeMismatch];
arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [account.user.country,user.country];
arguments []; default message [user.country]];
default message [Failed to convert property value of type 'java.lang.String' to required type 'org.MyCompany.entities.Country' for property 'user.country';
nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.MyCompany.entities.Country] for property 'country': no matching editors or conversion strategy found]
Irgendeine Idee, wie ich das überwinden kann?
Dank - das ist der Trick. Eine Sache, die ich noch nicht verstehe. wenn ich beim posten der daten einen kundenspezifischen konverter brauchte, warum brauchte ich nicht einen, wenn ich die daten bekomme? (Wenn die Seite geladen wurde, war das ausgewählte Land das gleiche Länderobjekt wie der Benutzer) –
@MrT. Spring MVC handhabt "Select" Formen geschickt. Ihre 'Form: select' hat' path = "user.country" '. Wenn der Benutzer also bereits ein Land mit der ID 42 hat, hat das Optionsfeld mit dem Wert 42 ein Attribut "selected =" selected "". Weitere Informationen finden Sie in der Dokumentation zum Tag (hier klicken)] (http://static.springsource.org/spring/docs/current/spring-framework-reference/html/view.html#view-jsp-formtaglib -Auswahltag). –
Super! Mann, der perfekt funktioniert hat, würde ich gerne mehr darüber verstehen, wie das funktioniert. – Gemasoft