일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- spring formatter
- 스프링 시큐리티 설정
- open-session-in-view
- 스프링시큐리티
- 도커 이미지 빌드
- Atomicity
- 스프링부트 도커
- 비기능적 요구사항
- java predicate
- 그래프큐엘
- 소프트웨어의 품격
- 수정자주입
- 스프링 포매터
- method refetence
- fetch join
- 기능적 요구사항
- 스프링di
- IOC
- 생성자주입
- kotlin ::
- kotlin 리팩터링
- 자바 필터
- 토비의 스프링
- ioc컨테이너
- jpa lazy
- jpa no session
- 정적팩토리메서드
- 스프링
- Spring
- 동적파라미터
Archives
- Today
- Total
공부기록
SPRING VALIDATOR 본문
반응형
pom.xml
pom.xml 에 다음과 같은 의존성을 추가합니다.
<!--validator -->
<!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator -->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.0.Final</version>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version>3.0.0</version>
</dependency>
ServletConfig.java
ServletConfig.java 에 다음과 같이 추가합니다
@Bean
public Validator validator() {
return new LocalValidatorFactoryBean();
}
@Override
public Validator getValidator() {
return validator();
}
다음으로는 유효성을 검사할 객체의 클래스에 제약조건을 명시해줍니다.
간단하게 이벤트의 이름, 이벤트의 정원, 이메일을 iv로 갖는 Event 클래스를 만듭니다.
Event.java
@Getter @Setter
public class Event {
@Min(value = 3, message = "최소 3글자 이상이어야합니다.")
private String title;
@Min(value = 2, message = "최소 2명 이상이어야합니다.")
private Integer limit;
@Email(message = "이메일의 형식이어야합니다.")
private String email;
}
form.jsp
다음으로 jsp를 작성합니다. 바인딩에러를 쉽게 보여주기 위해 스프링폼을 이용합니다 (<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>)
<section class="container">
<div class="row">
<form:form modelAttribute="member" method="post" action="/loginProcess">
아이디 : <form:input path="username"/>
<form:errors path="username"/>
비밀번호 : <form:input path="password"/>
<form:errors path="password"/>
이메일 : <form:input path="email"/>
<form:errors path="email"/>
<button type="submit">로그인</button>
</form:form>
</div>
</section>
바인딩에러가 있으면 message는 <form:errors ... /> 와 매핑되서 보여집니다.
EventController.java
@Controller
@Slf4j
public class EventController {
@GetMapping("/event/form")
public String eventForm(@ModelAttribute Event event) {
return "/event/form";
}
@PostMapping("/event/form")
public String eventProcess(@Validated @ModelAttribute Event event, BindingResult bindingResult) {
if(bindingResult.hasErrors()) {
return "/event/form";
}
return "redirect:/index";
}
}
post로 요청을 받으면 @Validated 로 Event 객체를 검사합니다. 검사한 뒤 바인딩에러가 있으면 bingdingResult에 에러를 담아줍니다. 만약 에러가 있으면 다시 form.jsp를 보여주고, 에러가 없으면 index페이지로 리다이렉트해줍니다.
화면
반응형
'Spring' 카테고리의 다른 글
HTTP2로 요청을 보내보자 (0) | 2020.01.29 |
---|---|
ResourceLoader (2) | 2020.01.22 |
java config으로 하는 Spring 셋팅. (0) | 2019.11.08 |
스프링 기본 설정하는 법 feat. Spring5, MyBatis, Eclipse (0) | 2019.11.03 |
[Spring]비즈니스 인터페이스에서 의존성을 정의하지 말라. (0) | 2019.10.26 |