2012-04-06 2 views
1

Я обновил Spring с 3.0.5 до 3.1.1 и наткнулся на любопытную проблему. Следующий код работал отлично в предыдущей версии:Объект ответа весной MVC 3.1.1

@RequestMapping("/getPeople") 
public Object getPeople() 
    { 
     HttpHeaders responseHeaders = new HttpHeaders(); responseHeaders.set("MyResponseHeader", "MyValue"); 
     return new ResponseEntity("Hello World", responseHeaders, HttpStatus.OK); 
    } 

Но с последней версией я получаю ошибку 404. Чтобы решить эту проблему, я должен упомянуть тип возвращаемого ResponseEntity в методе:

@RequestMapping("/getPeople") 
    public ResponseEntity getPeople() 
     { 
      HttpHeaders responseHeaders = new HttpHeaders(); responseHeaders.set("MyResponseHeader", "MyValue"); 
      return new ResponseEntity("Hello World", responseHeaders, HttpStatus.OK); 
     } 

Является ли это приемлемым обходной или я делаю что-то здесь не так?

+1

Может быть, это поможет: http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/mvc.html#mvc-ann-httpentity – vacuum

ответ

0

Пробуйте приведенный ниже код. Аннотация @ResponseBody похожа на @RequestBody. Эта аннотация может быть помещена в метод и указывает, что тип возврата должен быть записан прямо в тело ответа HTTP (а не помещен в модель или интерпретирован как имя вида).

@RequestMapping("/getPeople") 
@ResponseBody 
public Object getPeople() 
    { 
     HttpHeaders responseHeaders = new HttpHeaders(); 
     responseHeaders.set("MyResponseHeader", "MyValue"); 
     return new ResponseEntity("Hello World", responseHeaders, HttpStatus.OK); 
    } 
+0

Возвращение responseEntity дает больше гибкости и не требует аннотации @ResponseBody. – Vaibhav

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