2015-03-31 16 views
13

Non ho molta esperienza in Spring MVC e ho quanto segue su quali sono i tipi di ritorno dei valori validi che un metodo di controller può restituire.Quali sono i tipi di restituzione validi di un metodo di controllo Spring MVC?

quindi so che l'utente generare un HttpRequest ricevuti e gestiti dal DispatcherServlet quali vengono spediti questa richiesta ad una specifica classe controller.

classe Un controller è qualcosa di simile:

@Controller 
public class AccountController { 

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

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

quindi so che ogni metodo di gestire una specifica richiesta e che la richiesta gestita è specificato dal @RequestMapping annotazione.

so anche che il metodo restituisce un oggetto String che è il nome vista logica (che poi viene risolto mediante il risolutore vista a rendere la vista)

Quindi, in questa fase, Penso che un metodo di una classe controller restituisca solo l'oggetto String. Ma non ne sono sicuro. Forse un metodo come questo può restituire anche qualche tipo diverso di oggetti?

+1

ci sono tipi di ritorno abbondanza, è possibile restituire quello che ti serve, controllare questo http://stackoverflow.com/questions/7383622/spring-mvc-controllers-return-type –

+0

Craig Walls' 'Primavera in azione' è grande a spiegare Spring MVC –

+0

Questo è molto ben trattato nella documentazione Spring: http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-return-types –

risposta

14

Ci sono molti tipi di ritorno sono a disposizione per il metodo del gestore che viene annotata da @RequestMapping all'interno del controller come:

  • ModelAndView (Class)

  • Model (Interface)

  • Mappa
  • Stringa
  • void
  • View
  • HttpEntity<?> o ResponseEntity<?>
  • HttpHeaders

e molto altro ancora ..... See Docs

Ogni tipo di ritorno avere il suo uso specifico, come se si sta utilizzando String allora significa Return Nome e il nome di questa vista verranno risolti con ViewResolver. Se non si desidera restituire alcun nome vista, digitare return type void. Se si desidera impostare il nome della vista e si desidera inviare alcuni oggetti, utilizzare ModelAndView come tipo di ritorno.

Si prega di passare attraverso la documentazione si otterrà anche lì quale tipo di argomento del metodo possiamo passare in modalità gestore.

2

È avere una risposta diretta nella doc

Prendere una nota speciale del

Se il metodo è annotata con @ResponseBody, il tipo di ritorno è scritta al corpo della risposta HTTP. Il valore restituito verrà convertito nel tipo di argomento metodo dichiarato utilizzando HttpMessageConverters.

Quando il metodo è annoated con @ResponseBody, il tipo di ritorno può essere di qualsiasi tipo personalizzato, qualsiasi POJO Java, che il quadro verrà convertito in un repsentation appropriata JSON, XML o simili e scrivere di nuovo al corpo risposta

Problemi correlati