티스토리 뷰
ValidationContext에 대한 설명
ValidationContext는 Spring Web Flow에서 데이터 유효성 검사를 수행할 때 사용되는 인터페이스입니다. 사용자가 입력한 데이터를 검증하고, 오류가 발생하면 이를 MessageContext에 추가하여 화면(View)에서 적절한 피드백을 제공할 수 있도록 합니다.
1. ValidationContext의 역할
Spring Web Flow에서는 ValidationContext를 통해 특정 상태(State)에서 입력된 데이터를 검증할 수 있습니다. 이를 활용하면 사용자가 입력한 값이 올바른지 확인하고, 필요할 경우 오류 메시지를 제공할 수 있습니다.
주요 기능
- 유효성 검사 실행
- 폼 입력값을 검증하고 오류가 있는 경우 메시지를 추가합니다.
- 현재 상태(State) 정보 제공
- 현재 Flow에서 어느 상태에서 검증이 수행되는지 확인할 수 있습니다.
- 메시지 컨텍스트(MessageContext)와 연동
- 검증 과정에서 발생한 오류를 MessageContext에 추가하여 사용자에게 피드백을 제공합니다.
2. ValidationContext 사용 예시
예제 1: 간단한 폼 검증
public void validateUser(User user, ValidationContext context) {
MessageContext messages = context.getMessageContext();
if (user.getName() == null || user.getName().trim().isEmpty()) {
messages.addMessage(new MessageBuilder()
.error()
.source("name")
.defaultText("이름을 입력해야 합니다.")
.build());
}
if (user.getAge() < 18) {
messages.addMessage(new MessageBuilder()
.error()
.source("age")
.defaultText("나이는 18세 이상이어야 합니다.")
.build());
}
}
설명
- ValidationContext에서 getMessageContext()를 사용하여 메시지를 추가할 수 있습니다.
- MessageBuilder()를 이용해 특정 필드(name, age)에 대한 검증 오류를 추가하고, 오류가 발생하면 화면에서 이를 표시할 수 있습니다.
예제 2: 특정 상태에서 검증 실행
public void validateUserOnRegistration(User user, ValidationContext context) {
if ("registration".equals(context.getUserEvent())) {
MessageContext messages = context.getMessageContext();
if (user.getEmail() == null || !user.getEmail().contains("@")) {
messages.addMessage(new MessageBuilder()
.error()
.source("email")
.defaultText("유효한 이메일 주소를 입력하세요.")
.build());
}
}
}
설명
- context.getUserEvent()를 사용하면 특정 이벤트(registration 상태)에서만 검증이 수행되도록 설정할 수 있습니다.
- 이 검증은 사용자 등록 단계에서만 실행됩니다.
3. ValidationContext의 주요 메서드
메서드 설명
getMessageContext() | 검증 오류 메시지를 추가할 수 있는 MessageContext를 반환합니다. |
getUserEvent() | 현재 실행 중인 사용자 이벤트(예: submit, next, registration)를 가져옵니다. |
getActiveFlow() | 현재 실행 중인 Flow 정보를 가져옵니다. |
4. ValidationContext를 사용한 검증 흐름
- 사용자가 데이터를 입력하고 제출(submit)합니다.
- Spring Web Flow에서 ValidationContext를 사용하여 유효성 검사를 실행합니다.
- 오류가 발생하면 MessageContext에 메시지를 추가합니다.
- 사용자에게 오류 메시지가 표시됩니다.
- 모든 검증을 통과하면 Flow가 다음 단계로 진행됩니다.
5. ValidationContext 사용 시 주의할 점
- 검증 대상이 되는 상태를 명확히 정의해야 합니다.
- context.getUserEvent()를 사용하여 특정 상태에서만 검증이 수행되도록 제한하는 것이 좋습니다.
- 검증 오류 메시지는 사용자 친화적으로 작성해야 합니다.
- 메시지는 MessageBuilder()를 통해 설정하며, 명확하고 이해하기 쉬운 내용을 제공해야 합니다.
- 다국어 지원을 고려해야 합니다.
- defaultText() 대신 code()를 활용하면 다국어 지원이 가능합니다.
6. 요약
- ValidationContext는 Spring Web Flow에서 데이터 검증을 수행하는 인터페이스입니다.
- getMessageContext()를 사용하여 검증 실패 시 오류 메시지를 추가할 수 있습니다.
- getUserEvent()를 활용하여 특정 이벤트에서만 검증이 실행되도록 설정할 수 있습니다.
- 폼 검증, 상태별 검증, 메시지 처리 등을 효과적으로 수행할 수 있습니다.