2015-03-31 13 views
13

Nie mam zbyt dużego doświadczenia w Spring MVC i mam następujące informacje na temat jakie są typy zwracanych zmiennych, które metoda kontrolera może zwrócić.Jakie są prawidłowe typy powrotne metody kontrolera Spring MVC?

Więc wiem, że użytkownik wygenerowania HttpRequest odbierane i przetwarzane przez DispatcherServlet tego wysłania tego żądania do konkretnej klasy kontrolera.

klasa Kontroler jest coś takiego:

@Controller 
public class AccountController { 

    @RequestMapping("/showAccount") 
    public String show(@RequestParam("entityId") long id, Model model) { 
     ... 
    } 

    ....................................... 
    ....................................... 
    ....................................... 
} 

Więc wiem, że każda metoda obsługiwać konkretny wniosek i że żądanie jest obsługiwane przez określony @RequestMapping adnotacji.

wiem też, że metoda zwróci String obiekt, który jest nazwą logiczny widok (który następnie został rozwiązany przez widoku rezolwerem do renderowania widoku)

Tak, na tym etapie, Myślę, że metoda klasy kontrolera zwraca tylko obiekt String. Ale nie jestem tego pewien. Być może taka metoda może zwrócić również trochę różnych obiektów?

+1

Istnieje wiele typów zwrotu, możesz zwrócić to, czego potrzebujesz, sprawdź ten http://stackoverflow.com/questions/7383622/spring-mvc-controllers-return-type –

+0

"Spring in Action" Craiga Wallsa o wyjaśnianiu Spring MVC –

+0

Jest to bardzo szczegółowo opisane w dokumentacji Spring: http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-return-types –

Odpowiedz

14

Istnieje wiele rodzajów powrotne są dostępne metody Handler, która jest adnotacjami przez @RequestMapping wewnątrz kontrolera jak:

  • ModelAndView (klasa)

  • modelu (Interface)

  • Mapa
  • String
  • void
  • Zobacz
  • HttpEntity<?> lub ResponseEntity<?>
  • HttpHeaders

i dużo więcej ..... See Docs

Każdy rodzaj powrotu mieć jej szczególne zastosowanie jak w przypadku korzystania String oznacza to powrót View Nazwa i nazwa tego widoku zostanie rozwiązana przez ViewResolver. Jeśli nie chcesz zwracać żadnej nazwy widoku, zwróć typ void. Jeśli chcesz ustawić nazwę widoku, a także chcesz wysłać obiekt, użyj ModelAndView jako typu zwracanego.

Proszę przejść przez dokumentację, a także dowiesz się, jaką metodę argumentu możemy przekazać w procedurze obsługi.

2

masz bezpośredni odpowiedź w doc

Weź szczególną uwagę na

Jeśli metoda jest opatrzone @ResponseBody, typ zwracany jest napisany dla organizmu HTTP odpowiedzi. Zwracana wartość zostanie przekonwertowana na na zadeklarowany typ argumentu metody za pomocą HttpMessageConverters.

Kiedy metoda jest annoated z @ResponseBody, rodzaj powrotu może być dowolny typ niestandardowy, dowolny POJO Java, że ​​ramy będą konwertować do odpowiedniego repsentation JSON, XML lub podobnego i pisać z powrotem do Odpowiedź body

Powiązane problemy