Cómo enviar la lista de Objetos a Ver y volver al método Publicar en el Controlador

Supongamos que tengo una Person clase, hice una lista de instancias Person y agregué esta lista a un Model .

 List persons = new ArrayList(); model.addAttribute("persons",persons); return "savePersons"; 

En la página View , tengo un formulario:

 

Cuando hago clic en el botón Enviar, quiero vincular la Person List al método POST en el controlador.

 @RequestMapping(value = { "savePerson" }, method = RequestMethod.POST) public String savePerson(Model model, HttpServletRequest request, HttpSession session,@ModelAttribute("persons")List persons) { System.out.println(persons.length); return "success"; } 

pero la lista de persons no es vinculante / fetching en el método POST .

¿Es posible vincular una lista de objetos de esta manera o hay una alternativa para esto?

Creo que este enlace te ayudará a configurar lo que intentas hacer:

http://viralpatel.net/blogs/spring-mvc-multi-row-submit-java-list/

Parece que en su forma debe modificarlo a algo como:

      

Esta pregunta SO tiene un buen ejemplo que también podría ayudarlo: haga una lista de como objeto de respaldo de formulario usando spring 3 mvc, ¿syntax correcta?

Como Shri mencionó en su comentario en ssn771, responda que si su lista de enlaces es más de 256, entonces da error como

org.springframework.beans.InvalidPropertyException: propiedad no válida ‘mylist [256]’ de la clase de bean [com.app.MyPageListVO]: índice de fuera de límites en la ruta de la propiedad ‘mylist [256]’; la excepción anidada es java.lang.IndexOutOfBoundsException: Índice: 256, Tamaño: 256 en org.springframework.beans.BeanWrapperImpl.getPrope rtyValue (BeanWrapperImpl.java:830) en …

Este error se produce porque, de forma predeterminada, 256 es límite para el crecimiento automático de matriz y colección para evitar OutOfMemoryErrors , pero puede boost este límite configurando la propiedad AutoGrowCollectionLimit de WebDataBinder en @InitBinder en ese controlador.

Código:

 @InitBinder public void initBinder(WebDataBinder dataBinder) { // this will allow 500 size of array. dataBinder.setAutoGrowCollectionLimit(500); }