은근한

Validation 처리 본문

카테고리 없음

Validation 처리

EsJoo 2017. 9. 8. 03:36

Laravel에서의 Validation 처리는 Request 요청을 받은 데이터로 사용을 했었다.

Spring에서 비교를 해보자면 HttpServletRequest request로 파라미터로 받아서 getParameter 메소드를 사용해서 검사를 하는 방식이였다.

하지만, Spring에는 어노테이션이 있다! 모델에 어노테이션을 적용해서 BindingResult로 에러를 처리 할 수 있다.


@NotNull, @NotEmpty를 사용.

*Validation 어노테이션은 http://docs.oracle.com/javaee/7/api/javax/validation/constraints/package-summary.html

public class User implements UserDetails{

private String id;
@NotNull
@NotEmpty
private String username;
@NotNull
@NotEmpty
private String email;
@NotNull
@NotEmpty
private String password;
@NotNull
@NotEmpty
private String passwordConfirm;
@NotNull
@NotEmpty
private String gender;


폼에서 요청을 받으면 @ModelAttibute를 사용해서 모델에 바로 데이터를 넣는데

@Valid 어노테이션을 하나 더 추가하고, BindingResult를 사용해서 에러처리를 한다.

현재 리턴 값은 validationError를 final로 상수 처리 해놓았고 현재 나의 처리 방식은 ajax로 modal을 띄워 준다.

@RequestMapping(value = "/user/joinProcess", method = RequestMethod.POST)
public String joinProcess(
@ModelAttribute @Valid User newUser,
BindingResult bindingResult
) {
if (bindingResult.hasErrors()) {
logger.info(bindingResult.toString());
return validationError;
}

...

}


현재 만들고 있는 회원가입폼.. 디자인이..





아무것도 없이 조인 버튼을 누르면



이와 같이 모달을 띄우게 된다.


위의 코드에서 logger부분에 에러를 스트링으로 뽑으면



길어서 중간에 잘랐지만.. NotEmpty가 보이게 된다.

이건 내가 스크립트에서 데이터가 아무것도 없으면 빈값으로 데이터를 보내기에 NotEmpty라는 어노테이션을 받아 에러를 띄운다.

*Validation은 Front, Back 둘 다 해주는것이 좋다!!!