Validator 사용하기
앞에서 만든 검색창을 사용할 때 빈 값을 넣으면 에러 메시지가 오른쪽에 출력하도록 하고 싶어졌습니다.
저렇게 해주고 싶으면 먼저 Validator가 필요하고...Controller에 Validator를 등록해줘야 하고...View에서 에러 출력할 부분을 표시해 줘야 합니다.
1. Validator 구현하기
@SuppressWarnings("unchecked")
public boolean supports(Class clazz) {
return MemberCommand.class.isAssignableFrom(clazz);
}
public void validate(Object obj, Errors errors) {
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "keyword", "required", "Field is required.");
}
}
위 코드는 Spring Reference 13.9.12에 있는 error tag 부분에 있는 소스를 거의 그대로 사용했습니다. 여기에 있는 코드를 보기 전에는 Pro Spring을 보고 아래처럼 구현했었습니다. 전 위가 더 간단해 보이고 편했습니다.
[#M_ more.. | less.. | public class SearchingValidator implements Validator {
public boolean supports(Class clazz) {
return clazz.isAssignableFrom(MemberCommand.class);
}
public void validate(Object obj, Errors errors) {
MemberCommand command = (MemberCommand) obj;
if (command.getKeyword() == null || command.getKeyword().length() == 0) {
errors.rejectValue("keyword", "required", "Field is required.");
}
}
}_M#]2. Controller에 등록하기.
class="member.web.SearchMemberController">
<property name="memberRepository" ref="memberRepository" />
<property name="validator" ref="searchingValidator" />
</bean>
<!-- Validator 등록 -->
<bean name="searchingValidator" class="validator.SearchingValidator"/>
3. View에 자리잡기.
<tr>
<td>SEARCH:</td>
<td><form:input path="keyword" /></td>
<td><form:errors path="keyword" /></td>
<td><input type="submit" value="GO" /></td>
</tr>
</table>
4. 실험해 봤습니다.
수고했삼~