2013-11-20 2 views
1

Я использую аннотацию @ResponseBody с помощью контроллера Spring, но я не уверен, когда его использовать. Кроме того, я назвал свой метод index, и мне интересно, имеет ли это значение. Мой метод головаКогда должен иметь метод контроллера Spring MVC @ResponseBody?

@RequestMapping(value = "/addproduct", method = RequestMethod.POST) 
    public ModelAndView index(@RequestParam("name") String name, 
           @RequestParam("file") MultipartFile file, 
           @RequestParam("desc") String desc,) { 

Но в другом методе в том же контроллере я использую @ResponseBody, и я хочу знать, когда что использование правильно:

@RequestMapping(value = "", method = RequestMethod.GET) 
    @ResponseBody 
    public ModelAndView start() { 

Можете ли вы мне сказать? Функциональность работает, но я хочу быть уверенным, что я делаю.

ответ

2

Когда вы используете @ResponseBody, контроллер преобразует содержимое, которое вы вернули в тело ответа, HttpMessageConverter.

Обычно вы можете использовать его, когда хотите вернуть определенный формат данных (например, json или xml). Вот пример:

@RequestMapping(value = "/addproduct", method = RequestMethod.POST) 
    public String index(@RequestParam("name") String name, 
          @RequestParam("file") MultipartFile file, 
          @RequestParam("desc") String desc,) { 
      return "{\"name\": \"" + name + "\"}"; 
    } 

Затем, вы можете получить ответ: {\ «Имя \»: \ «хххххх \»}»

+0

что происходит, когда возвращаемый тип не является строка, но ModelView (это похоже на ошибку, чтобы объединить @ResponseBody и вернуть ModelView)? Какое сообщение используется HttpMessageConverteris? –

+0

зависит от того, какой преобразователь вы установили в файле springMVC-servlet.xml. Если вы используете MappingJacksonHttpMessageConverter, конвертер попытается преобразовать объект в json и return – Ardy

+0

с конфигурацией по умолчанию, какой конвертер будет использоваться? –

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