Validator Plugin 사용! ( 톰캣 서버를 재시작 할 필요가 없다 )
-> 간단 버젼 : 공백 유무만 체크하기
-> 필수 수정파일 : validator.xml, ActionForm( 폼빈 ), struts-config.xml, jsp파일
-> 참고 파일 : validator-rules.xml
<< 로그인시 아이디의 공백 유무 검사하기 >>
첫 페이지 이름 : login.jsp
폼 빈 이름 : LoginForm.java
액션빈 이름 : LoginAction.java
일단 struts로 동작하도록 모든 링크 설정을 한다..
그리고 나서 공백유무의 validation 시작~~
1. Form 자바파일의 상속을 ActionForm에서 ValidatorForm 으로 변경
(예) public class LoginForm extends ActionForm 을
public class LoginForm extends ValidatorForm 으로 변경
2. validator.xml 작성
<formset>
<form name="loginForm"> struts-config.xml에서 등록한 FormBean의 name을 연결
<field property="id" depends="required"> property는 검사할 곳(login.jsp 파일의 아이디 입력부분의 name값)
required는 공백유무 검사하는 명령어
<arg key="loginForm.id" /> key는 보여질 에러 메세지이름, 이 이름대로 MessageResources.properties에 등록
</field>
</form>
</formset>
3. jsp 파일에 html:errors 처리 위해 한줄 추가하기
<%@taglib prefix="html" uri="/WEB-INF/struts-html.tld" %>
<html:errors /> 입력하면 에러메세지 보여줌
4. 에러 메세지가 보이지 않을 때는 struts-config.xml 의 <action-mappings>안의 <action>의 validate를 true로 바꾸고 input="/돌아갈곳.jsp" 추가
(예) <action path="/login" name="loginForm" type="app.web.LoginAction" validate="true" input="/login.jsp">
[참고] 에러 메세지가 보여지는 방법
1. validation의 종류에 따라 validator-rules.xml 파일안의 해당 validator name의 msg 를 찾는다.
(예) validation의 종류가 required(공백체크) 라면
------- validator-rules.xml 파일안에서 아래 msg="errors.required" 를 찾는다..
<validator name="required"
classname="org.apache.struts.validator.FieldChecks"
method="validateRequired"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
javax.servlet.http.HttpServletRequest"
msg="errors.required"/>
------------
2. MessageResources.properties 파일에서 errors.required를 찾으면 errors.required={0} is required. 라고 되어있지~
요것이 보이는 메세지 이고,,, {0} 부분은 우리가 직접 셋팅 가능
3. {0} 부분은 validator.xml 내의 <arg key="loginForm.id" /> 를 보면 loginForm.id라는 이름으로 등록되어있으므로
이 이름대로 MessageResources.properties에 등록 되어 있는 것을 출력한다.
loginForm.id 라는 이름은 사용자가 맘대로 바꿔줘도 상관없는 그냥 이름 임.. ㅋㅋㅋ
MessageResources.properties에
loginForm.id=ㅋㅋㅋㅋ 테스트다~
라고 추가하면
최종 에러메세지는
ㅋㅋㅋㅋ 테스트다~ is required. 이렇게 된다!!
출처 : http://www.underroom.com/?sort_index=regdate&order_type=asc&mid=java&page=2&document_srl=4485