간단한 기본 등록 페이지라서 다른코드와 똑같이 하다가 약간 변화를 주었다.
html 에서 ajax로 서버에게 요청할때 success 즉 통신에 성공하고 java 에서 return 으로 ok (boolean) 을 내려주면 message 를 띄어준다.
const updateDriver = function () {
if (confirm("등록하시겠습니까?")) {
$.ajax({
type: "POST",
url: "/create",
data: $("#createForm").serialize(),
dataType: 'json',
success: function (r) {
alert(r.message);
if (r.OK) {
location.href = '/list';
}
},
error: function (xhr, status, error) {
alert(error);
}
});
}
}
try-catch 를 적용해보았다 User.createUser(dto) 에서 Assert.hasText() 를 통해 유효성이 검증되지 않으면 예외를 던진다. 어떤 예외인지 확인하려면 해당 클래스로 이동하여 확인한다.
@Transactional
@Override
public ServiceResult create(Dto dto) {
ServiceResult serviceResult = ServiceResult.builder().OK(false).build();
try {
repository.save(User.createUser(dto));
} catch (IllegalArgumentException e) {
serviceResult.setMessage(e.getMessage());
return serviceResult;
}
serviceResult.setMessage("사용자 등록이 완료되었습니다.");
serviceResult.setOK(true);
return serviceResult;
}
public static User createUser(Dto dto) {
Assert.hasText(dto.getName(), "사용자 이름은 필수 입니다.");
Assert.hasText(dto.getCellphone(), "사용자 휴대폰 번호는 필수 입니다.");
return User.builder()
.name(dto.getName()).cellPhone(dto.getCellphone()).build());
}
이렇게 하면 화면에서 유효성 검사 + 서버에서도 유효성 검사를 해서 스크립트 오류가 나더라도 원하는 에러메시지를 반환할 수 있다.
반응형
'WEB > JAVA' 카테고리의 다른 글
제네릭 DTO (0) | 2023.03.14 |
---|---|
나만 어려운 예외처리 (0) | 2022.05.19 |
Enum Type 에서 Function Interface 활용 (0) | 2022.04.01 |
Test-Driven-Development 테스트 주도 개발 (0) | 2022.03.24 |
Java 8 Interface - default 메서드, static 메서드 (0) | 2022.03.23 |