Ho un modello che contiene un elenco di Paesi (Elenco) e un oggetto utente che contiene un oggetto Paese. Ho la visione che l'utente può selezionare il suo paese.
Questo è frammento della mia pagina jsp:modulo mvc di primavera: selezionare il tag
<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>
Questo è il mio modello di account:
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;
}
}
Quando i carichi jsp (GET) il modulo: selezionare visualizza l'elemento selezionato dell'utente corrente nazione. Il problema è che quando invio il modulo ottengo questa eccezione:
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]
Qualche idea su come posso superare questo?
Grazie - Che ha fatto il trucco. Una cosa che non capisco ancora. se avevo bisogno di un convertitore personalizzato durante la pubblicazione dei dati, perché non ne avevo bisogno quando ricevevo i dati? (quando la pagina è stata caricata, il paese selezionato era lo stesso oggetto del paese dell'utente) –
@MrT. Spring MVC gestisce abilmente le forme 'select'. Il tuo 'form: select' ha' path = "user.country" '. Quindi se l'utente ha già un paese con id 42, il tag opzione con valore 42 avrà un attributo 'selected =" selected "'. Per ulteriori informazioni, [controlla la documentazione sul tag select (clicca qui)] (http://static.springsource.org/spring/docs/current/spring-framework-reference/html/view.html#view-jsp-formtaglib -selecttag). –
Fantastico! L'uomo che ha funzionato perfettamente, mi piacerebbe capire di più come funziona. – Gemasoft