앞에서 만든 검색창을 사용할 때 빈 값을 넣으면 에러 메시지가 오른쪽에 출력하도록 하고 싶어졌습니다.

사용자 삽입 이미지
저렇게 해주고 싶으면 먼저 Validator가 필요하고...Controller에 Validator를 등록해줘야 하고...View에서 에러 출력할 부분을 표시해 줘야 합니다.

1. Validator 구현하기

public class SearchingValidator implements 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에 등록하기.

    <bean name="/search.do"
        class="member.web.SearchMemberController">
        <property name="memberRepository" ref="memberRepository" />
        <property name="validator" ref="searchingValidator" />
    </bean>

    <!-- Validator 등록 -->
    <bean name="searchingValidator" class="validator.SearchingValidator"/>

3. View에 자리잡기.

        <table>
            <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. 실험해 봤습니다.
사용자 삽입 이미지
수고했삼~