2011-01-19 11 views
22

ho notato che questo controller è stato deprecato nell'ultima primavera e si chiedeva quale fosse il controller alternativo?Spring SimpleFormController in 3.0

+0

Tenete a mente che Wile la roba deprecato funziona ancora a Spring 3, i ragazzi di primavera sono MUC h più aggressivo nella rimozione di API deprecate rispetto alle persone JavaSE, che in realtà le rimuoveranno. – skaffman

+0

Yup 'SimpleFormController' non è più supportato (provato con' 4.0.4.RELEASE'). –

risposta

27

In Spring 3.0 è necessario utilizzare classi semplici annotate da @Controller. Tale controller può gestire più di una richiesta. Ogni richiesta viene gestita con il proprio metodo. Questi metodi sono annotati da @RequestMapping.

Una cosa che è necessario ripensare è il fatto che una vecchia scuola SimpleFormController gestisce molte richieste diverse (almeno: una per ottenere il modulo e un secondo per inviare il modulo). Devi gestirlo ora a mano. Ma credimi è più facile.

Per esempio, questo controller in REST Stile, gestirà due richieste:

  • /libro - POST: per creare un libro
  • /libro/forma - GET: per ottenere la forma per la creazione

del codice 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

applausi. la mappatura annota è tutto nuovo per me mentre stavo seguendo questo libro ho ottenuto http://www.amazon.co.uk/Spring-Action-Craig-Walls/dp/1933988134/ref=sr_1_1?ie=UTF8&qid=1295447914&sr=8 -1 – jonney

+0

domanda veloce. vuol dire che non devo più mappare i miei controller in bean tramite i file xml? – jonney

+0

@jonney: Sì, ci sono nuove annotazioni: @Controller, @Service, @Repository, nonché @Autowire e @Inject. Ma devi abilitare qualcosa che è chiamato scansione dei componenti nel tuo xml. - Dai un'occhiata al blog SpringSource (verso la fine del 2009) e alla sezione sulle nuove funzionalità del riferimento Spring. - Sei anche libero di fare una nuova domanda. – Ralph

6

Annotated POJOs può funzionare come controller; vedi @Controller.

+0

grr, sei stato il primo :-) –

+0

Perché mai è stato votato in ribasso, un anno e mezzo dopo che è stato pubblicato? Anche le altre risposte hanno votato? – duffymo

2

Nella versione 3.0, i controller non devono più ereditare da una classe base. Il modo standard è utilizzare annotated controllers.

+0

Non di molto .... – duffymo

+0

Quindi non devo più mappare i miei controller via xml? – jonney

+0

@jonney esattamente. il modo XML per farlo non è nemmeno più documentato nel riferimento Spring 3. –

Problemi correlati