У меня есть enum
вроде как:
public enum Age {
THREE("3"),
FIVE("5");
private final String value;
Age(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
и Пользователь class
как:
public class User {
@NotNull
String name;
Age age;
public User() {
}
public User(@NotNull String name, Age age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Age getAge() {
return age;
}
public void setAge(Age age) {
this.age = age;
}
}
и RestController
как:
@ExceptionHandler(HttpMessageNotReadableException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ResponseEntity<User> exceptionHandling(HttpMessageNotReadableException exception,
HandlerMethod handlerMethod, WebRequest webRequest) {
logger.error("error:" + exception.getLocalizedMessage());
EnumValidationException ex = (EnumValidationException) exception.getMostSpecificCause();
User user = new User();
user.setName(""); // I want set user's input
user.setAge(Age.FIVE);
return ResponseEntity.ok(user);
}
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<User> exceptionHandling2(MethodArgumentNotValidException exception) {
logger.error("error:" + exception.getLocalizedMessage());
User user = new User();
user.setName(""); // I want set user's input
user.setAge(Age.FIVE);
return ResponseEntity.ok(user);
}
@PostMapping("/user2")
public String setUser2(@Valid @RequestBody User user) {
return "ok";
}
Я сидел JSON
как:
{
"name":"Name",
"age":"11"
}
Теперь, как я обрабатываю HttpMessageNotReadableException
исключений, которые возвращают Name
в name
поле в response
?
я должен изменить enum
на static final String
?
можно ли написать индивидуально Annotaion
? как справиться со своим getValue()
?
Примечание : я использую Hibernate
.