사용자 개체를 받아들이고 응답으로 다른 사용자 개체를 반환하는 스프링 휴식 끝 점이 있습니다. 내 컨트롤러 방법은 다음과 같습니다.
@PostMapping
public UserResponse createUser(@RequestBody UserDetailsRequestModel userDetails)
throws Exception {
UserRest userResponse= new UserRest();
ModelMapper modelMapper = new ModelMapper();
UserDto userDto = modelMapper.map(userDetails, UserDto.class);
userDto.setRoles(new HashSet<>(Arrays.asList(Roles.ROLE_USER.name())));
UserDto createdUser = userService.createUser(userDto);
returnValue = modelMapper.map(createdUser, UserResponse.class);
return userResponse;
}
내 userResponse 클래스는 다음과 같습니다.
public class UserRest {
private String userId;
private String firstName;
private String lastName;
private String email;
....getters and setters
그리고이 흐름은 잘 작동합니다. 하지만 이제는 들어오는 JSON 필드가 정상인지 확인하기 위해 createUser 메서드 (JSR 303)에 유효성 검사를 추가해야합니다. 이를 위해 컨트롤러에 아래 코드를 추가하려고합니다.
@PostMapping
public UserResponse createUser(@Valid @RequestBody UserDetailsRequestModel userDetails, BindingResult result){
if(result.hasErrors()){
Map<String, String> errorMap = new HashMap<>();
for(FieldError error: result.getFieldErrors()){
errorMap.put(error.getField(), error.getDefaultMessage());
}
**return new ResponseEntity<Map<String, String>>(errorMap, HttpStatus.BAD_REQUEST);**
}
UserRest userResponse= new UserRest();
ModelMapper modelMapper = new ModelMapper();
UserDto userDto = modelMapper.map(userDetails, UserDto.class);
userDto.setRoles(new HashSet<>(Arrays.asList(Roles.ROLE_USER.name())));
UserDto createdUser = userService.createUser(userDto);
returnValue = modelMapper.map(createdUser, UserResponse.class);
return **userResponse**;
내 코드의 명백한 문제는 ResponseEntity <Map <String, String >>에서 UserResponse 개체로 변환 할 수 없다는 것입니다.
이 작업을 수행하는 적절한 방법이 있습니까? 동일한 컨트롤러 메서드 내에 오류가없는 경우 오류 (있는 경우) 또는 UserResponse 개체를 보낼 수 있도록?