@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);
}
}
@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;
}
}
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);
}
}
如有任何帮助,将不胜感激。
您似乎已经在控制器
中添加了异常处理程序
方法,因为如果您从该控制器
本身获得异常
时,将触发该方法。使用seperate类进行异常处理例如:
@ControllerAdvice
public class GlobalExceptionController {
@ExceptionHandler(DuplicateEntityException.class)
@ResponseBody
public ErrorDetail handleDuplicateEntityException(DuplicateEntityException ex) {
ExceptionRepresentation body = new ExceptionRepresentation(ex.getMessage());
HttpStatus responseStatus = HttpStatus.CONFLICT;
return new ResponseEntity<ExceptionRepresentation>(body,responseStatus);
}
在这里,使用@controlleradvice
将对每个控制器应用
异常
处理。
最重要的是,您的方法应该抛出异常,以便@exceptionhandler
工作,更改您的方法签名。
public User createUser(@RequestBody User user) throw DuplicateEntityException{
throw new DuplicateEntityException();
}
有一个奇怪的问题,想不出该怎么处理。有简单的POJO: UPD有双向Hibernate映射,也许它与问题有关。
我正在尝试使用@ResponseBody实现SpringWebMVC@ExceptionHandler,以返回包含验证错误的对象。(此处记录了策略E)。 在Spring3.0。x、 自解决以来,有一个已确认的错误,它阻止了此功能正常工作。我使用的是Spring 3.1.2,不应该碰到它。 然而,我遇到了一个例外“找不到可接受的代表”。 例外情况如下: 代码如下: 有什么想法吗?
这是我得到的错误: 参考文献:http://www.petrikainulainen.net/programming/spring-framework/spring-from-the-trenches-adding-validation-to-a-rest-api/ Spring@ExceptionHandler不能与@ResponseBody一起使用
问题内容: 有一个奇怪的问题,无法弄清楚如何处理。有简单的POJO: 其余端点: 在json响应中,除了Id之外,还有其他所有字段,我需要在前端编辑/删除人员。如何配置Spring Boot来序列化ID? 这就是现在的响应: UPD具有双向hibernate映射,可能与问题有关。 问题答案: 我最近遇到了同样的问题,这是因为默认情况下是这样工作的。请参阅我的SO问题-> 在将应用程序迁移到Spri
我正在使用@ExceptionHandler来管理我的所有异常,并为任何抛出异常的REST API返回一个JSON响应。目前我管理两个异常,第一个是ResourceNotFoundException,它可以工作,但第二个是FileExtensionException,它不工作。它在eclipse控制台中抛出这个异常,而在rest响应中抛出任何东西。 2015-09-21 09:09:05.197错
我使用的是Spring Kafka 1.1.2-Spring Boot 1.5.0 RC版本,并且配置了一个自定义值serialiser/Deserialiser类,扩展/。这些类确实使用Jackson ObjectMapper,它可以通过构造函数提供。 是否可以从Spring上下文中注入ObjectMapper?我已经配置了一个ObjectMapper,我希望在序列化/反序列化程序中重用它。