Messages
- label.properties
member.register=회원가입
1<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
2<head>
3 <title><spring:message code="member.register" /></title>
4</head>
- 사이트가 여러 언어를 지원해야할 때 label_ko.properties, label_en.properties와 같이 만든다고 한다
- http헤더의 Accept-Launguage를 자동으로 인식한다고 하니까 편할 것 같다
Validate command object
Validation
- RegisterRequestValidator
1@Override
2public void validate(Object target, Errors errors) {
3 RegisterRequest regReq = (RegisterRequest) target;
4
5 if(regReq.getEmail() == null | regReq.getEmail().trim().isEmpty()) {
6 errors.rejectValue("email", "bad");
7 }
8 else {
9 Matcher matcher = pattern.matcher(regReq.getEmail());
10 if(!matcher.matches()) {
11 errors.rejectValue("email", "bad");
12 }
13 }
14
15 ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name", "required");
16 ValidationUtils.rejectIfEmpty(errors, "password", "required");
17 ValidationUtils.rejectIfEmpty(errors, "confirmPassword", "required");
18 if (!regReq.getPassword().isEmpty()) {
19 if (!regReq.isPasswordEqualToConfirmPassword()) {
20 errors.rejectValue("confirmPassword", "nomatch");
21 }
22 }
23}
Print Error Message
1<form:errors path="email" />
- 만약 errors.rejectValue(“email”, “requireed”) 코드로 에러코드를 추가했고 커맨드 객체가 registerRequest인 경우,
- required.registerRequest.eail
- required.email
- required.String
- required
- 위와 같은 순서대로 메시지 코드를 검색한다.
Global scoped validate
- MvcConfig.java
1@Override
2public Validator getValidator() {
3 return new RegisterRequestValidator();
4}
- RegisterController.java
1@PostMapping("/register/step3")
2public String handleStep3(@Valid RegisterRequest regReq, Errors errors) {
3 if (errors.hasErrors())
4 return "register/step2";
- global 범위 validator를 사용할 수 있다.
Controller scoped validate
- RegisterController.java
1@InitBinder
2protected void initBinder(WebDataBinder binder) {
3 binder.setValidator(new RegisterRequestValidator());
4}
- 우선순위
- setValidator() : controller scoped validator 적용
- addValidator() : global scoped validator 적용 후 controller scoped validator 적용
Bean validation
- RegisterRequest.java
1import javax.validation.constraints.Size;
2
3import org.hibernate.validator.constraints.Email;
4import org.hibernate.validator.constraints.NotBlank;
5import org.hibernate.validator.constraints.NotEmpty;
6
7public class RegisterRequest {
8 @NotBlank
9 @Email
10 private String email;
11 @Size(min = 6)
12 private String password;
13 @NotEmpty
14 private String confirmPassword;
15 @NotEmpty
16 private String name;
-
bean validation을 사용하기 위해
-
org.hiberante dependency를 추가해야한다
-
기존에 있던 Validator를 없애두어야한다
-
대부분의 경우 이거 써서 validator 직접 짤 일은 없을 것 같다.