2011-01-19 11 views
22

me doy cuenta de que este controlador ha quedado obsoleto en la última primavera y se preguntaba cuál es el controlador alternativo?Primavera SimpleFormController en 3.0

+0

tener en cuenta que el material obsoleto Wile todavía funciona en la primavera 3, los chicos de primavera son muc h más agresivo en la eliminación de API obsoletas que las personas con JavaSE, es decir, que realmente las eliminarán. – skaffman

+0

Yup 'SimpleFormController' ya no es compatible (intentado con' 4.0.4.RELEASE'). –

Respuesta

27

En Spring 3.0 debe usar clases simples anotadas por @Controller. Tal controlador puede manejar más de una solicitud. Cada solicitud se maneja por su propio método. Estos métodos están anotados por @RequestMapping.

Una cosa que debes reconsiderar es el hecho de que una vieja escuela SimpleFormController maneja muchas solicitudes diferentes (al menos: una para obtener el formulario y otra para enviar el formulario). Tienes que manejar esto ahora a mano. Pero créanme que es más fácil.

Por ejemplo, este controlador en REST estilo, manejará dos solicitudes:

  • /libro - POST: para crear un libro
  • /libro/form - GET: para obtener el formulario para la creación

Código Java:

@RequestMapping("/book/**") 
@Controller 
public class BookController { 

    @RequestMapping(value = "/book", method = RequestMethod.POST) 
    public String create(
     @ModelAttribute("bookCommand") final BookCommand bookCommand) { 

     Book book = createBookFromBookCommand(bookCommand); 
     return "redirect:/book/" + book.getId(); 
    } 

    @RequestMapping(value = "/book/form", method = RequestMethod.GET) 
    public String createForm(final ModelMap modelMap) { 
     modelMap.addAttribute("all", "what you need"); 
     return "book/create"; //book/create.jsp 
    } 
} 
+0

aplausos. el mapeo de anotaciones es nuevo para mí, ya que estaba siguiendo este libro que obtuve http://www.amazon.co.uk/Spring-Action-Craig-Walls/dp/1933988134/ref=sr_1_1?ie=UTF8&qid=1295447914&sr=8 -1 – jonney

+0

pregunta rápida. ¿significa eso que ya no tengo que mapear mis controladores en frijoles a través de archivos xml? – jonney

+0

@jonney: Sí, hay nuevas anotaciones: @Controller, @Service, @Repository, así como @Autowire y @Inject. Pero debe habilitar algo que se denomina exploración componente en su xml. - Eche un vistazo al blog de SpringSource (hacia finales de 2009) y la sección de nuevas características de la referencia de Spring. - También puedes hacer una nueva pregunta. – Ralph

6

Annotated POJOs pueden actuar como controladores; ver @Controller.

+0

grr, fuiste el primero :-) –

+0

¿Por qué diablos se votó en contra, un año y medio después de su publicación? ¿Las otras respuestas también fueron rechazadas? – duffymo

2

En Spring 3.0, sus Controladores ya no deberían heredar de una clase base. La forma estándar es usar annotated controllers.

+0

No por mucho ... – duffymo

+0

Así que no tengo que mapear mis controladores a través de xml, ¿verdad? – jonney

+0

@jonney exactamente. la forma de XML para hacerlo ya no está documentada en la Referencia de Spring 3. –

Cuestiones relacionadas