Ho un problema durante la creazione di un valore predefinito contenuto nel mio oggetto corrente.Il valore predefinito in selezionare è ancora presente dopo l'invio
Il valore è impostato correttamente nel campo, ma quando ho inviato il modulo, il valore di default è ancora lì, anche se l'utente ha scelto un altro valore nella lista ...
Ecco il mio controller:
@RequestMapping(method = RequestMethod.GET)
public String createForm(final ModelMap modelMap){
User user;
user = new User();
user.setGroup("HelpDesk");
user.setName("John");
ArrayList<String> groupList = new ArrayList<>();
groupList.add("Admin");
groupList.add("HelpDesk");
groupList.add("GroupManager");
groupList.add("Others");
modelMap.addAttribute("user", user);
modelMap.addAttribute("groupList", groupList);
return "/user/user-add";
}
@RequestMapping(method = RequestMethod.POST)
public String createUser(@ModelAttribute("user") final User user, BindingResult result) {
userValidator.validate(user, result, groupList);
logger.info(user.getGroup()); //Will print "HelpDesk,Admin" for instance
return "...";
}
E qui è il mio JSP:
<table>
<form:form method="POST" modelAttribute="user">
<tr>
<td>Name:</td>
<td><form:input path="name"/></td>
<td><form:errors path="name" cssClass="error" /></td>
</tr>
<tr>
<td>Group:</td>
<td><form:select path="group" items="${groupList}" multiple="single"/></td>
<td><form:errors path="group" cssClass="error" /></td>
</tr>
<tr>
<td colspan="3"><input type="submit" /></td>
</tr>
</form:form>
</table>
Per esempio, se scelgo "Admin" nella lista di selezione, vado a prendere "HelpDesk, Admin" nella proprietà "gruppo" della mia utente dopo aver inviato il modulo ...
Cosa sto facendo di sbagliato?
Grazie per il vostro aiuto!
Hai considerato di aggiungere un campo vuoto all'inizio dell'elenco? O sarebbe una brutta soluzione per te? :) – GGrec
Usando gli strumenti per sviluppatori Firebug o Chrome, puoi trovare il valore che viene pubblicato dal browser? –
@GGeorge non è così brutto, ma mi piacerebbe capire perché attualmente non funziona – user1901206