2010-01-13 39 views
10

Estoy usando Spring MVC 3.0 y no puedo ver todas las partes de este problema: mi controlador producirá una lista de objetos de dominio. Digamos un objeto Usuario simple con firstName, lastName, age y propiedades de rol. Quiero mostrar esa lista de usuarios en una tabla (una columna por propiedad), cada fila también tiene una casilla de verificación que están seleccionadas por defecto. La persona que usa la página puede entonces deseleccionar algunas de ellas. Cuando presionen el botón de enviar, me gustaría poder tomar la lista de usuarios seleccionados y hacer algo con ellos.Spring MVC y casillas de verificación

Sé que hay un formulario: checkboxes etiqueta en Spring, pero no puedo ver cómo usarlo y cómo obtener los resultados en el controlador.

¿Alguna ayuda o sugerencia?

+0

@axtavt: solo para proporcionar más información, también lucho con formCheckboxes y eventualmente lo abandono. El enlace de primavera no está bien soportado para las casillas de verificación –

Respuesta

20

Si User objeto tiene un campo id, puede enviar los identificadores de los usuarios seleccionados como este (que incluso no necesita etiqueta de formulario de Primavera para este escenario simple):

<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

el atributo 'opcional' en' @ RequestParam' ya no es válido, esto puede ser reemplazado por 'required' –

1

Cuando una página contiene una casilla de verificación y se envía el formulario que la contiene, los navegadores hacen lo siguiente.

  • si se marca la casilla de verificación, se presentó con su atributo 'valor' como el valor
  • si los checkbos es no está marcada, la variable no se presenta en absoluto.

En su caso, me gustaría cambiar @RequestParam ("abono") a @RequestParam (required = falso, valor = "abono") y para verificar si su booleana a ser nulo. Si es nulo, el usuario no marcó la casilla de verificación.

+0

Spring * does * hacer algo al respecto - ver http: // stackoverflow .com/questions/8723765/checkbox-values-do-not-bind-into-object-when-false # answer-8724006 – reinierpost

Cuestiones relacionadas