2011-01-19 3 views
22

Я заметил, что этот контроллер теперь устарел в последней весне и задавался вопросом, что такое альтернативный контроллер?Spring SimpleFormController в 3.0

+0

Имейте в виду, что Wile устаревшие вещи по-прежнему работает в Spring 3, пружинные ребята MUC h более агрессивны при удалении устаревших API, чем люди JavaSE, то есть они фактически удалят их. – skaffman

+0

Yup 'SimpleFormController' больше не поддерживается (используется с' 4.0.4.RELEASE'). –

ответ

27

В Spring 3.0 вы должны использовать простые классы, аннотированные @Controller. Такой контроллер может обрабатывать несколько запросов. Каждый запрос обрабатывается по собственному методу. Эти методы аннотируются @RequestMapping.

Одна вещь, которую нужно переосмыслить, состоит в том, что старая школа SimpleFormController обрабатывает множество различных запросов (по крайней мере: один для получения формы и второй для отправки формы). Вы должны справиться с этим сейчас вручную. Но поверьте мне, это проще.

Например, этот контроллер в REST стиле, будет обрабатывать два запроса:

  • /книга - POST: создать книгу
  • /книга/форма - GET: чтобы получить форму для создания

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

ура. annotaing mapping для меня все новое, поскольку я следовал этой книге, я получил http://www.amazon.co.uk/Spring-Action-Craig-Walls/dp/1933988134/ref=sr_1_1?ie=UTF8&qid=1295447914&sr=8 -1 – jonney

+0

быстрый вопрос. означает ли это, что мне больше не нужно отображать мои контроллеры в bean-компоненты через xml-файлы? – jonney

+0

@jonney: Да, есть новые аннотации: @Controller, @Service, @Repository, а также @Autowire и @Inject. Но вы должны включить что-то, что называется сканирование компонентов в вашем xml. - Взгляните на блог SpringSource (около конца 2009 года) и раздел новых функций ссылки Spring. - Вы также можете задать новый вопрос. – Ralph

6

Annotated POJOs могут выступать в качестве контроллеров; см. @Controller.

+0

grr, вы были первыми :-) –

+0

Почему же это проголосовало за полтора года после того, как оно было опубликовано? Были ли другие ответы проголосовали? – duffymo

2

В Spring 3.0 ваши контроллеры больше не должны наследовать базовый класс. Стандартный способ - использовать annotated controllers.

+0

Не много .... – duffymo

+0

Так что мне не нужно отображать мои контроллеры через xml больше, не так ли? – jonney

+0

@jonney точно. XML-способ сделать это еще не документирован в Spring 3 Reference. –

Смежные вопросы