JSR-303 어노테이션은 빈 객체에 주입되는 값의 유효성을 검사한다.
properties에 [annotation이름.bean객체이름.변수명] 을 써서 등록한다.
properties를 사용하기 위해서 ServletAppContext.java에 등록한다.
<ServletAppContext.java>
@Bean
public ReloadableResourceBundleMessageSource messageSource() {
ReloadableResourceBundleMessageSource res = new ReloadableResourceBundleMessageSource();
res.setBasename("/WEB-INF/properties/error_message");
return res;
}
setBasename으로 등록했기 때문에, error_message.properties 문서를 사용할 수 있다.
<TestController.java>
@PostMapping("/input_pro")
public String input_pro(@Valid DataBean1 dataBean1, BindingResult result) {
if(result.hasErrors()) {
return "input_data";
}
return "input_success";
}
Testcontroller에서 파라미터에 @Valid를 넣어서, DataBean1에 주입된 Bean 객체를 검사한다.
BindingTest는 test의 실패 시, 다시 입력페이지로 돌아가도록 설정한다.
<input_data.jsp>
<form:form action="input_pro" modelAttribute="dataBean1" method="post">
data 1: <form:radiobutton path="data1" value="true"/>true
<form:radiobutton path="data1" value="false"/>false<br/>
<form:errors path="data1" /><br/>
<form:button type="submit">확인</form:button>
</form:form>
jsp에서는 form 커스텀 태그를 이용해 출력한다. 특히 form:errors를 통해 오류가 @Valid 검사 시, 오류가 발생하면
properties에 등록한 오류 내용을 출력 할 수 있다.
1. JSR-303
@AssertTrue
private boolean data1;
@AssertFalse
private boolean data2;
@Max(100)
@Min(10)
private int data3;
@DecimalMax(value="100", inclusive=false)
@DecimalMin(value="10", inclusive=false)
private int data4;
@Null
private String data5;
@NotNull
private String data6;
@Digits(integer = 3, fraction=3)
private String data7;
@Size(min=3, max=10)
private String data8;
@AssertTrue : true이어야 한다.
@AssertFalse : false이어야 한다.
@Max(100) : 최대 100이다.
@Min(10) : 최소 10이다.
@DecimalMax(value="100", inclusive=false) : 최대100이면 100은 제외한다.
@DecimalMin(value="10", inclusive=false) : 최소10이며 10은 제외된다.
@Null : null값이어야 한다.
@NotNull : null이면 안된다
@Digits(integer=3, fraction=3) : 정수부가 3자리이고, 소수부가 3자리이다.
@Size(min=3, max=10) : 최소 3글자이고 최대 10글자이다.
2. JS-380
@NotEmpty
private String data1;
@NotBlank
private String data2;
@Positive
private String data3;
@PositiveOrZero
private String data4;
@Negative
private String data5;
@NegativeOrZero
private String data6;
@Email
private String data7;
@NotEmpty : empty이면 안되고, 띄어쓰기 가능하다.
@NotBlank : 띄어쓰는 공백 없앤 후 empty이면 안된다.
@Positive : 0보다 큰 양수
@PositiveOrZero : 0 혹은 양수
@Negative : 0보다 작은 음수
@NegativeOrZero : 0 혹은 음수
@Email : @가 있어야 한다.
'Spring > Spring MVC 5' 카테고리의 다른 글
Interceptor (0) | 2020.05.27 |
---|---|
Validator 커스터마이징 (0) | 2020.05.27 |
에러 메시지 커스터마이징 (0) | 2020.05.27 |
유효성 검사 (0) | 2020.05.27 |
Properties / Message (0) | 2020.05.27 |