2025-04-24
โ๏ธ ๊ฒ์ฆ ํ๋ฆ ์์ฝ
ํด๋ผ์ด์ธํธ ์ ๋ ฅ๊ฐ โ Controller(@Valid) โ BindingResult๋ก ์๋ฌ ํ์ธ โ View๋ก ํผ๋๋ฐฑ
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MemoDto {
@Min(value = 10, message = "ID๋ 10 ์ด์์ด์ด์ผ ํฉ๋๋ค.")
@Max(value = 65535, message = "ID์ ์ต๋ ์ซ์๋ 65535์ดํ์ฌ์ผ ํฉ๋๋ค.")
@NotNull(message = "ID๋ ํ์ ์
๋ ฅ๊ฐ์
๋๋ค.")
private Integer id;
@NotBlank(message = "๋ฉ๋ชจ๋ฅผ ์
๋ ฅํ์ธ์")
private String text;
@NotBlank(message = "์์ฑ์๋ฅผ ์
๋ ฅํ์ธ์")
@Email(message = "์ฌ๋ฐ๋ฅธ ์ด๋ฉ์ผ ํ์์ ์
๋ ฅํด์ฃผ์ธ์")
private String writer;
@DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm")
@NotNull(message = "๋ ์ง์ ๋ณด๋ฅผ ์ ํํด์ฃผ์ธ์")
private LocalDateTime createAt;
}
@PostMapping("/add")
public void add_post(@Valid MemoDto dto, BindingResult bindingResult) {
log.info("POST /memo/add..." + dto);
if(bindingResult.hasErrors()) {
for(FieldError error : bindingResult.getFieldErrors()) {
log.info("Error Field: " + error.getField() + " Error Msg: " + error.getDefaultMessage());
}
}
}
<form action="${pageContext.request.contextPath}/memo/add" method="post">
<div>
<label>id : </label><input name="id" />
</div>
<div>
<label>text : </label><textarea name="text"></textarea>
</div>
<div>
<label>writer : </label><input name="writer" />
</div>
<div>
<label>createAt : </label><input type="datetime-local" name="createAt" />
</div>
<div>
<input type="submit" value="๋ฉ๋ชจ์ฐ๊ธฐ" />
</div>
</form>
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
<annotation-driven validator="validator"/>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.2.5.Final</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>javax.el</artifactId>
<version>2.2.6</version>
</dependency>
์ด๊ธฐ์ hibernate-validator
์ ์ต์ ๋ฒ์ ์ธ 8.x๋ฅผ ์ถ๊ฐํ๋๋, ์๋ฒ ์คํ ์ ์๋ ์๋ฌ ๋ฐ์:
javax.validation.NoProviderFoundException:
Unable to create a Configuration, because no Bean Validation provider could be found.
Tip ๐ง
ํญ์ ์ฌ์ฉํ๋ ํ๋ ์์ํฌ(Spring ๋ฑ) ๋ฒ์ ์ ๋ง๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ์ ํ์ธํ์!
์ต์ ๋ฒ์ ์ด ํญ์ ์ต์ ์ ์๋๋ค.
Error Field: text Error Msg: ๋ฉ๋ชจ๋ฅผ ์
๋ ฅํ์ธ์
Error Field: createAt Error Msg: ๋ ์ง์ ๋ณด๋ฅผ ์ ํํด์ฃผ์ธ์
Error Field: id Error Msg: ID๋ ํ์ ์
๋ ฅ๊ฐ์
๋๋ค.
Error Field: writer Error Msg: ์์ฑ์๋ฅผ ์
๋ ฅํ์ธ์
@Valid
์ BindingResult
์กฐํฉ์ผ๋ก ๊ฐํธํ๊ฒ ์๋ฒ ๊ฒ์ฆ ๊ตฌํ.