2010-01-13 25 views
10

Sto utilizzando Spring MVC 3.0 e non riesco a visualizzare tutte le parti a questo problema: il mio controller produrrà un elenco di oggetti di dominio. Diciamo un semplice oggetto Utente con proprietà FirstName, lastName, age e role. Voglio produrre quell'elenco di utenti in una tabella (una colonna per proprietà), ogni riga ha anche una casella di controllo che sono tutti selezionati per impostazione predefinita. La persona che usa la pagina può quindi potenzialmente deselezionarne alcune. Quando premono il pulsante di invio, mi piacerebbe essere in grado di prendere la lista degli utenti selezionati e fare qualcosa con loro.Spring MVC e caselle di controllo

So che esiste un modulo: tag di checkbox in Spring, ma non riesco a capire come utilizzarlo e come ottenere i risultati nel controller.

Qualsiasi aiuto o suggerimento?

+0

@axtavt: solo per fornire ulteriori informazioni, ho problemi con formCheckboxes, e alla fine l'ho abbandonato. Il binding a molla non è ben supportato per le caselle di controllo –

risposta

20

Se User oggetto ha un campo id, è possibile inviare gli ID degli utenti selezionati come questo (che non hanno nemmeno bisogno di tag form di primavera per questo semplice scenario):

<form ...> 
    <c:foreach var = "user" items = "${users}"> 
     <input type = "checkbox" name = "userIds" value = "${user.id}" checked = "checked" /> <c:out value = "${user.firstName}" /> ... 
    </c:foreach> 
    ... 
</form> 

-

@RequestMapping (...) 
public void submitUsers(@RequestParam(value = "userIds", required = false) long[] userIds) 
{ 
    ... 
} 
+1

l'attributo 'optional' nel' @ RequestParam' non è più valido, può essere sostituito con 'required' –

1

Quando una pagina contiene una casella di controllo e il relativo modulo di contenimento viene inviato, i browser eseguono quanto segue.

  • se la casella è selezionata, viene presentato con l'attributo 'valore' come valore
  • se le checkbos è non controllato, la variabile non viene presentata affatto.

Nel tuo caso, vorrei cambiare @RequestParam ("abono") per @RequestParam (richiesto = false, value = "abono") e quindi controllare per il vostro booleana sia nullo. Se è nullo, la casella di controllo non è stata spuntata dall'utente.

+0

Spring * fa * qualcosa su questo - vedi http: // stackoverflow .com/domande/8723765/checkbox-valori-do-not-bind-in-oggetto-quando-falso # risposta-8724006 – reinierpost

Problemi correlati