본문 바로가기
Spring/Spring MVC 5

JSR-303 / JSR-383

코동이 2020. 5. 27.

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