[펌글] Apache Commons Validator의 validation.xml 설명 (ver 1.1.3)

By | 8월 24, 2009

- 출처 : http://cafe.naver.com/richprogrammer.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=1098 -

※ validation.xml 예제 - 시작

 

<?xml version="1.0" encoding="UTF-8">
<!DOCTYPE form-validation PUBLIC "–//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">

 

<form-validation>

 

     <global>

 

     <!-- 반복적으로 사용되는 문자열을 상수 형태로 정의 -->

     <!--우편번호 상수 123-456 형태-->

     <constant>

          <constant-name>postalCode</constant-name>

          <constant-value>^\d{3}-^\d{3}$</constant-value>

     </constant>

 

     </global>

 

 

     <formset>

  

          <!--userInfoForm 폼 빈에 대한 유효성 검증 규칙—>

          <!-- name : struts-config.xml 에서 지정한 ActionForm의 이름 -->

 

          <form name="userInfoForm">

    

               <!--userInfoForm의 name(이름) 프로퍼티에 대한 검증 규칙 -->

               <!-- property : ActionForm의 프로퍼티 -->

               <!-- depends : validator-rules.xml 에 지정된 선언된 각 검증 규칙의 이름으로 ,

                                     여기에 지정한 검증규칙을 통과해야만 유효성검사를 통과한 것이다.

                                     검증규칙이 여러 개 필요할 때는 쉼표로 구분하며, 순서대로 검증이 실행된다. -->

 

               <field property="name" depends="required">

                    <!-- arg는 에러메시지 출력시 {0},{1} .. 등에 채워줄 메시지의 키이다. -->

                    <arg key="userInfoForm.username"/>

               </field>   

 

 

               <!--userInfoForm의 address(주소) 프로퍼티에 대한 검증 규칙 -->

               <field property="address" depends="required">

                    <arg key="userInfoForm.address"/>

               </field>

 

 

               <!--userInfoForm의 postcode(우편번호) 프로퍼티에 대한 검증 규칙 -->

               <!-- depends에 mask 규칙을 추가했다는 것은, 정규표현식문자열파라미터로 전송하여

                      유효성검사를 하겠다는 의미이다. (mask == 정규식사용)-->

               <field property="postcode" depends="required,mask">

 

 

                    <!-- msg 태그 : validator-rules.xml 에 지정된 에러메시지가 아닌

                                           다른 에러메시지를 사용하기 위해 지정한다 -->

                    <!-- msg 태그 내의 name : 에러메시지를 별도 지정할 검증규칙의 이름.

                                                           depends 속성에 있는 값들 중 하나여야 한다. -->

                    <!-- msg 태그 내의 key : 리소스번들의 어떤 키의 값을 에러메시지로 사용할 것인지 결정 -->

 

                    <!-- (예) mask 규칙에서 오류가 발생했을 때 출력할 메시지 지정 -->

                    <msg name="mask" key="userInfoForm.postcodeError"/>

 

                    <arg key="userInfoForm.postcode"/>

 

                    <!-- msg태그와 arg태그에는 각각 resource 속성을 지정할 수 있는데,

                           resource 속성을 false 로 하면,  리소스번들에서 키에 해당하는 값을 검색해서

                           가져오는 것이 아니라 key 속성에 지정된 문자열을 그대로 사용한다. -->

                    <!-- var 태그 : 유효성 검증기로 넘길 파라미터이다. 이 경우에는 mask 규칙에서 사용할

                                         정규표현식 문자열을 전달하는데 사용되고 있다. -->

                    <var>

                         <var-name>mask</var-name>

                         <var-value>${postalCode}</var-value><!-- 상수 사용 -->

                    </var>

 

               </field>

 

 

               <field property="email" depends="required,email">

                    <!-- email rule 에 있는 에러메시지가 아닌 아래에서 key로 지정한 에러메시지를 출력한다. -->

                    <arg key="userInfoForm.email"/>
               </field>

 

          </form>

 

     </formset>

 

</form-validation>

 

※ validation.xml 예제 - 끝

 

 

 

 

※ 리소스번들 프로퍼티 파일 예제 - 시작

 

# 메시지 출력시 상/하단에 출력될 머릿말과 꼬릿말

message.header=<ul>

message.footer=</ul>

 

# Error Messages

errors.required={0}(이)가 필요합니다.

errors.minlength={0}(은)는 최소한 {1} 문자 이상이어야 합니다.

errors.maxlength={0}(은)는 최대 {1} 문자 이하이어야 합니다.

errors.invalid={0}(이)가 유효하지 않습니다.

errors.byte={0}(은)는 byte 형이어야 합니다.

errors.short={0}(은)는 short 형이어야 합니다.

errors.integer={0}(은)는 integer 형이어야 합니다.

errors.long={0}(은)는 long 형이어야 합니다.

errors.float={0}(은)는 float 형이어야 합니다.

errors.double={0}(은)는 double 형이어야 합니다.

errors.date={0}(은)는 날짜형이 아닙니다.

errors.range={0}(은)는 {1]에서 {2} 사이 값이어야 합니다.

errors.creditcard={0}(은)는 유효하지 않은 신용카드 번호입니다.

errors.email={0}(은)는 유효하지 않은 이메일 주소입니다.

 

# Messages For Validation

userInfoForm.username=사용자명

userInfoForm.address=주소

userInfoForm.postcode=우편번호

userInfoForm.postcodeError={0}가 형식에 맞지 않습니다. \

우편번호는 123-456 과 같은 형식을 따릅니다.

userInfoForm.email=이메일주소

 

※ 리소스번들 프로퍼티 파일 예제 - 끝

 

 

 

[링크] Validator 의 depends 속성에 대한 명세

[링크] Apache Commons Validator 홈페이지

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments