我有一個非常簡單的彈簧安置控制器如下:春@ExceptionHandler,將@ResponseBody不序列化/元帥響應
@RequestMapping("/management")
@RestController
public class ManagementController {
@Autowired
private ManagementService managementService;
@ExceptionHandler(DuplicateEntityException.class)
@ResponseStatus(code = HttpStatus.CONFLICT)
public ErrorDetail handleDuplicateEntityException(DuplicateEntityException ex) {
return new ErrorDetail(ex.getMessage(), HttpStatus.CONFLICT.value());
}
@RequestMapping(value = "/user", method = RequestMethod.POST)
@ResponseStatus(code = HttpStatus.CREATED)
public User createUser(@RequestBody User user) {
return managementService.createUser(user);
}
}
和ErrorDetail類...
@XmlRootElement(name = "error")
@XmlAccessorType(XmlAccessType.FIELD)
public class ErrorDetail {
@XmlElement(name = "message")
private String message;
@XmlAttribute(name = "status")
private int status;
public ErrorDetail(String message, int status) {
super();
this.message = message;
this.status = status;
}
public String getMessage() {
return message;
}
public int getStatus() {
return status;
}
public void setMessage(String message) {
this.message = message;
}
public void setStatus(int status) {
this.status = status;
}
}
和自定義異常,AAAException擴展RuntimeException。
public class DuplicateEntityException extends AAAException {
private static final long serialVersionUID = 4223773548694193141L;
public DuplicateEntityException(String message) {
super(message);
}
public DuplicateEntityException(String message, Throwable cause) {
super(message, cause);
}
}
然而@ExceptionHandler不會馬歇爾ErrorDetail對象我只是得到一個500,我可以從該方法返回一個字符串和它的作品。我發送的application/xml通過createUser方法被正確解組和編組,我無法理解爲什麼它們不能用於@ExceptionHandler。
我使用Spring 4.2.6。
任何幫助將不勝感激。
調試後說,請發表您的'DuplicateEntityException'類.. –
添加DuplicateEntityException – Jack
,如果你在你的方法ErrorDetail返回類型? – RVP