2가지 방법이 존재함, 1번은 람다식을 사용하지 않은경우 2번은 람다식
1. 람다식 비사용
@Transactional
public User 회원수정(int id, User user) {
//1. 영속화
User userEntity = userRepository.findById(id).orElseThrow(new Supplier<IllegalArgumentException>(){
@Override
public IllegalArgumentException get() {
return new IllegalArgumentException("찾을수 없는 id입니다.");
}
});
2.람다식 사용
@Transactional
public User 회원수정(int id, User user) {
//1. 영속화
User userEntity = userRepository.findById(id)
.orElseThrow(() -> {
return new IllegalArgumentException("존재하지 않는 아이디입니다.");
});
그러나 우리는 custom한 validation이 있기 때문에
@Transactional
public User 회원수정(int id, User user) {
//1. 영속화
User userEntity = userRepository.findById(10)
.orElseThrow(() -> {
return new CustomValidationApiException("찾을 수 없는 id입니다.");
});
리턴을 CustomValidationApiException 으로 바꾼 후
public class CustomValidationApiException extends RuntimeException {
//객체를 구분할때
private static final long serialVersionUID = 1L;
private Map<String, String> errorMap;
public CustomValidationApiException(String message) {
super(message);
}
public CustomValidationApiException(String message, Map<String, String> errorMap) {
super(message);
this.errorMap = errorMap;
}
public Map<String, String> getErrorMap() {
return errorMap;
}
}
super(message); 만 가진 새로운 생성자를 만든다
-> 왜? 회원수정에서의 Exception은 data가 아닌 단순하게 id가 없다고 String만 보내면 되기 때문이다.
fail(error=>{ //Httpstatus 상태코드가 200번대가 아닐때 fail
if(error.data == null){
alert(error.responseJSON.message);
}else{
alert(JSON.stringify(error.responseJSON.data));
}
그렇기 때문에 js도 수정을 해줘야 한다. 원래 data를 담은 alert창을 띄웠기 때문에
담긴 data가 없는 지금 에러메세지는 단순 String 메세지로 보내면 되는것.
'Spring > JPA + Security' 카테고리의 다른 글
[Spring Data JPA] JPA를 사용한 구독하기 2 - 네이티브 쿼리 짜기 (0) | 2023.01.08 |
---|---|
[Spring Data JPA] JPA 사용한 구독하기 1 - DB테이블 설정 (0) | 2023.01.08 |
[Spring] 회원 수정 에서 유효성 처리하기 - 2 Exception Handler 적용 (0) | 2023.01.07 |
[Spring Data JPA] 데이터 수정하기 + AJAX 포함 예제 (0) | 2023.01.07 |
[Spring Security] 세션을 JSP로 넘기는 방법 2가지 (0) | 2023.01.07 |
댓글