๋จ์ํ ์ ๋ ฅ ์ฒดํฌ๋ฅผ ๋์ด, ์๋น์ค์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ๊ณผ ๋ณด์์ ์งํค๊ธฐ ์ํ ์ฒซ ๋ฒ์งธ ๋ฐฉ์ด์ ์ ๋๋ค.
๐ก ์์
- ํ์๊ฐ์ ์ ํ์ ํญ๋ชฉ ๋๋ฝ ๋ฐฉ์ง
- ๋น๋ฐ๋ฒํธ ์ต์ ๊ธธ์ด ์ ํ
- ์ซ์ ๋ฒ์ ๊ฒ์ฆ
- ์ ์์ ์ ๋ ฅ(Injection) ์ฌ์ ์ฐจ๋จ
<!-- Validation API -->
<dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
<version>3.0.2</version>
</dependency>
<!-- Hibernate Validator -->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>7.0.1.Final</version>
</dependency>
<!-- Expression Language (ํ์์) -->
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>jakarta.el</artifactId>
<version>3.0.3</version>
</dependency>
โ ย Note
์คํ๋ง ๋ถํธ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด hibernate-validator๊ฐ ๊ธฐ๋ณธ ํฌํจ๋์ด ์์ด ๋ณ๋ ์ค์ ์ด ํ์ ์๋ค.
์ด๋ ธํ ์ด์ | ํน์ง | ์ฌ์ฉ์ฒ |
---|---|---|
@Valid | JSR-380 ํ์ค, ๋จ์ผ ๊ฒ์ฆ | ์ผ๋ฐ์ ์ธ ๊ฒ์ฆ |
@Validated | ์คํ๋ง ์ ์ฉ, ๊ทธ๋ฃน ๊ฒ์ฆ ์ง์ | ๋ณต์กํ ๊ฒ์ฆ ๋ก์ง ํ์ ์ |
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
public class PersonDto {
@NotNull(message = "์ด๋ฆ์ ํ์ ์
๋ ฅ๊ฐ์
๋๋ค.")
private String name;
@NotNull(message = "๋์ด๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์.")
private Integer age;
@Size(min = 2, max = 20, message = "์ฃผ์๋ 2์ ์ด์ 20์ ์ดํ๋ก ์
๋ ฅํ์ธ์.")
private String addr;
// Getter, Setter, ์์ฑ์ ์๋ต
}
@PostMapping("/validate")
public String validateTest(@Valid PersonDto dto, BindingResult result, Model model) {
if (result.hasErrors()) {
// ๊ฒ์ฆ ์คํจ ์ ์๋ฌ ๋ชฉ๋ก ์ ๋ฌ
model.addAttribute("errors", result.getAllErrors());
return "param/errorPage";
}
// ๊ฒ์ฆ ์ฑ๊ณต ์
return "param/successPage";
}
๐กย BindingResult๋ ๋ฐ๋์ @Valid ๋ฐ๋ก ๋ค์ ์์นํด์ผ ๊ฒ์ฆ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค!
NotNull.personDto.name=์ด๋ฆ์ ์
๋ ฅํด ์ฃผ์ธ์.
Size.personDto.addr=์ฃผ์๋ {min}์ ์ด์ {max}์ ์ดํ๋ก ์
๋ ฅํด์ผ ํฉ๋๋ค.
๐กย TIP ์คํ๋ง ์ค์ ์์ ๋ฉ์์ง ์์ค๋ฅผ ๋ฑ๋กํ๋ฉด ๋ค๊ตญ์ด ์ฒ๋ฆฌ๋ ๊ฐ๋ฅ!
์ด๋ฒ ํ์ต์ ํตํด ์ ๋ ฅ๊ฐ ๊ฒ์ฆ์ด ๋จ์ํ ์ต์ ์ด ์๋๋ผ ํ์๋ผ๋ ๊ฑธ ๋ค์ ๋๊ผ๋ค.
ํนํ BindingResult๋ฅผ ํ์ฉํ๋ฉด ๋๋ฒ๊น ๊ณผ ์ฌ์ฉ์ ํผ๋๋ฐฑ ์ฒ๋ฆฌ๊ฐ ํจ์ฌ ์์ํด์ง๋ค.
์์ผ๋ก๋ ๊ฒ์ฆ ๋ก์ง์ ํ์คํํ์ฌ, ์๋น์ค ์์ ์ฑ์ ๋์ด๋ ๋ฐ ์ง์คํ ๊ณํ์ด๋ค.