728x90
JSR-303
Data
package kr.bit.beans;
import javax.validation.constraints.*;
public class Data {
@AssertTrue // True가 아닌 값이 들어오면 오류
private boolean num1;
@AssertFalse // False가 아닌 값이 들어오면 오류
private boolean num2;
@Max(200)
@Min(20)
private String num3;
@Null // 값이 들어오면 오류
private String num4;
@NotNull // 값이 들어오지 않으면 오류
private String num5;
@Digits(integer =3, fraction = 2) // 정수, 실수
private String num6;
@Size(min=2, max=10) // 지정된 글자수보다 짧거나 길면 오류
private String num7;
@Pattern(regexp = "[a-zA-Z]*") // 주어진 정규식에 위배되면 오류
private String num8;
public Data() {
this.num1=true;
this.num2=false;
this.num3="10";
this.num4=null;
this.num5="spring";
this.num6="222.22";
this.num7="java";
}
public boolean isNum1() {
return num1;
}
public void setNum1(boolean num1) {
this.num1 = num1;
}
public boolean isNum2() {
return num2;
}
public void setNum2(boolean num2) {
this.num2 = num2;
}
public String getNum3() {
return num3;
}
public void setNum3(String num3) {
this.num3 = num3;
}
public String getNum4() {
return num4;
}
public void setNum4(String num4) {
this.num4 = num4;
}
public String getNum5() {
return num5;
}
public void setNum5(String num5) {
this.num5 = num5;
}
public String getNum6() {
return num6;
}
public void setNum6(String num6) {
this.num6 = num6;
}
public String getNum7() {
return num7;
}
public void setNum7(String num7) {
this.num7 = num7;
}
public String getNum8() {
return num8;
}
public void setNum8(String num8) {
this.num8 = num8;
}
}
Controller
package kr.bit.controller;
import kr.bit.beans.Data;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import javax.validation.Valid;
@Controller
public class SpringController {
@GetMapping("/t1")
public String t1(Data data) {
return "test1";
}
@PostMapping("/test_proc") // 입력한 값 유효성 검사 - > 유효성 검사에 대한 결과값
public String test_proc(@Valid Data data, BindingResult result){
if(result.hasErrors()) {
return "test1";
}
return "test2";
}
}
test1.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<body>
<form:form modelAttribute="data" method="post" action="test_proc"> <!-- 앞글자는 소문자 -->
num1 : <form:radiobutton path="num1" value="true"/>true
<form:radiobutton path="num1" value="false"/>false<br>
<form:errors path="num1"/><br> <!-- default error message 출력됨 -->
num2 : <form:radiobutton path="num2" value="true"/>true
<form:radiobutton path="num2" value="false"/>false<br>
<form:errors path="num2"/><br>
num3 : <form:input path="num3" type="text"/><br>
<form:errors path="num3"/><br>
num4 : <form:checkbox path="num4" value="check1"/>check1<br>
<form:errors path="num4"/><br>
num5 : <form:checkbox path="num5" value="check2"/>check2<br>
<form:errors path="num5"/><br>
num6 : <form:input path="num6" type="text"/><br>
<form:errors path="num6"/><br>
num7 : <form:input path="num7" type="text"/><br>
<form:errors path="num7"/><br>
num8 : <form:input path="num8" type="text"/><br>
<form:errors path="num8"/><br>
<form:button type="submit">체크</form:button>
</form:form>
</body>
</html>
test2.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
Success!
</body>
</html>
error.properties
AssertTrue.data.num1 = num1 is not true
AssertFalse.data.num2 = num2 is not false
Max.data.num3 = num3 must be 200 or equal to 200
Min.data.num3 = num3 have to be at least 20
Null.data.num4 = num4 does not have to insert a value
NotNull.data.num5 = num5 has to insert a value
Digits.data.num6 = num6 is an integer with 3 digits and 2 fractions
Size.data.num7 = num7 can use StringSize from 2 to 10
Pattern.data.num8 = regexp is an illegal pattern
JSR-380
Data
package kr.bit.beans;
import javax.validation.constraints.*;
public class Data {
@NotEmpty // 값이 길이가 0이면 에러발생(공백도 글자로 인식)
private String num1;
@NotBlank // 공백제거하고 길이가 0이면 에러발생
private String num2;
@Positive // 양수가 아니면 에러
private int num3;
@PositiveOrZero
private int num4;
@Negative // 음수가 아니면 에러
private int num5;
@Email // @기호가 있어야함 (이메일형식)
private String num6;
public Data() {
this.num1 = "레알마드리드";
this.num2 = "도르트문트";
this.num3 = 7;
this.num4 = 10;
this.num5 = -3;
}
public String getNum1() {
return num1;
}
public void setNum1(String num1) {
this.num1 = num1;
}
public String getNum2() {
return num2;
}
public void setNum2(String num2) {
this.num2 = num2;
}
public int getNum3() {
return num3;
}
public void setNum3(int num3) {
this.num3 = num3;
}
public int getNum4() {
return num4;
}
public void setNum4(int num4) {
this.num4 = num4;
}
public int getNum5() {
return num5;
}
public void setNum5(int num5) {
this.num5 = num5;
}
public String getNum6() {
return num6;
}
public void setNum6(String num6) {
this.num6 = num6;
}
}
Controller
package kr.bit.controller;
import kr.bit.beans.Data;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import javax.validation.Valid;
@Controller
public class SpringController {
@GetMapping("/t1")
public String t1(Data data) {
return "test1";
}
@PostMapping("/test_proc") // 입력한 값 유효성 검사 - > 유효성 검사에 대한 결과값
public String test_proc(@Valid Data data, BindingResult result){
if(result.hasErrors()) {
return "test1";
}
return "test2";
}
}
test1.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<body>
<form:form modelAttribute="data" method="post" action="test_proc"> <!-- 앞글자는 소문자 -->
num1 : <form:input path="num1" type="text"/>
<form:errors path="num1"/><br>
num2 : <form:input path="num2" type="text"/>
<form:errors path="num2"/><br>
num3 : <form:input path="num3" type="text"/>
<form:errors path="num3"/><br>
num4 : <form:input path="num4" type="text"/>
<form:errors path="num4"/><br>
num5 : <form:input path="num5" type="text"/>
<form:errors path="num5"/><br>
num6 : <form:input path="num6" type="text"/>
<form:errors path="num6"/><br>
<form:button type="submit">Check</form:button>
</form:form>
</body>
</html>
error.properties
NotEmpty.data.num1 = Length must be greater than 0
NotBlank.data.num2 = Length must be greater than 0 after trimming blanks
Positive.data.num3 = Must be a positive number
PositiveOrZero.data.num4 = Must be 0 or a positive number
Negative.data.num5 = Must be a negative number
Email.data.num6 = Must be in email format
728x90
'Frameworks > Spring' 카테고리의 다른 글
[Spring] MVC (Interceptor) (0) | 2024.05.12 |
---|---|
[Spring] Validator Customizing (0) | 2024.05.10 |
[Spring] MVC (FormTag - path (Radiobutton Checkbox etc..) (1) | 2024.05.09 |
[Spring] MVC (Validation+FormTag / Error msg) (0) | 2024.05.09 |
[Spring] MVC (Properties / Print the set value in JSP) (0) | 2024.05.09 |