ActionForm과 Validator 사용하기
오라클자바커뮤니티에서 설립한 오엔제이프로그래밍
실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)
Validator와 표준 ActionForm을 같이 사용하는 것은 불가능 하며 대신 Validator Framework와 같이 동작하도록 설계된 ActionForm의 Sub Class를 사용해야 합니다.
동적인 ActionForm 사용 여부에 따라 두가지 루트 클래스를 선택 할 수 있는데
ActionForm이 상위에 있고 이를 상속한 DynaActionForm과 ValidatorForm이 존재 합니다. DynaActionForm은 다시 DynaValidatorForm이 상속을 받았으며 DynaValidatorForm은 DynaValidatorActionForm이 상속을 받았습니다. 마찬가지로 ValidatorForm 클래스를 ValidatorActionForm이 상속 받았습니다.
만약 동적인 ActionForm을 사용한다면 DynaValidatorForm을 사용해야 하며 표준 ActionForm을 사용한다면 ValidatorForm이나 이를 상속한 하위 클래스를 이용해야 합니다.
ActionForm이 일반적이든 동적이든 Validator를 설정 하는 방법은 동일 합니다. 단지 어떤 ActionForm의 서브 클래스를 사용하느냐에 따라 struts-config.xml 파일의 <form-bean> 섹션에 사용되는 클래스의 전체이름이 달라질 뿐입니다.
ValidatorForm과 DynaValidatorForm은 서브 클래스를 가지고 있는데 ValidatorForm의 하위 클래스는 ValidatorActionForm이며 DynaValidatorForm의 하위 클래스는 DynaValidatorActionForm이라 부릅니다.
이 두가지 클래스의 다른 목적은 폼빈 또는 Action에 정의된 검증을 할당하는 것 입니다. ValidatorActionForm, DynaValidatorActionForm 클래스들은 스트럿츠 설정 파일의 <action> 요소의 path 속성들을 Validator로 넘기며 Validator는 action의 이름을 이용하여 검증을 하는데 이용 합니다.
앞의 경우와 달리 ValidatorForm이나 DynaValidatorForm을 사용 한다면 사용할 검증 규칙을 찾는데 ActionForm의 이름(name)을 사용 합니다.
예를 들어 ActionForm이 세가지의 검증 규칙을 포함하고 있고 그 중 두가지만 특별한 Action을 위해 실행 한다고 할 때 Action을 실행 시 필요한 검증 부분만 실행 하도록 설정 하는 것이 가능 하다는 이야기 입니다. 그렇지 않은 경우라면 폼의 모든 검증 규칙에 대해 실행할 것 입니다.
애플리케이션의 배송 정보를 입력 하는 화면이 있다고 가정 하겠습니다. 화면을 통해 Forst Name, Last Name, Street Name, Zip Code, Phone등의 정보를 입력 받는다고 가정 합니다.
DynaActionForm을 사용 할 것이므로 Validation을 위해 DynaValidatorForm 클래스를 사용 할 것 입니다.
스트럿츠 설정 파일에서 다음과 같이checkoutForm을 폼빈으로 설정 합니다.
<form-bean
name="checkoutForm" type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="firstName" type="java.lang.String"/>
<form-property name="lastName" type="java.lang.String"/>
<form-property name="address" type="java.lang.String"/>
<form-property name="city" type="java.lang.String"/>
<form-property name="state" type="java.lang.String"/>
<form-property name="postalCode" type="java.lang.String"/>
<form-property name="country" type="java.lang.String"/>
<form-property name="phone" type="java.lang.String"/>
</form-bean>
다음 단계는 validation.xml 파일을 편집 하는 것 입니다. 이 파일은 애플리케이션에 종속적인 것이며 특정한 ActionForm에서 사용하는 검증 규칙에 대해 설정 합니다. 검증 규칙은 validation.xml 파일에서 ActionForm 한 개 이상과 매핑 됩니다.
<formset>
<constant>
<constant-name>phone</constant-name>
<constant-value>^\(?(\d{3})\)?[-| ]?(\d{3})[-
| ]?(\d{4})$</constant-value>
</constant>
<constant>
<constant-name>zip</constant-name>
<constant-value>^\d{5}(-\d{4})?$</constant-value>
</constant>
<form name="checkoutForm">
<field
property="firstName"
depends="required,mask">
<arg0 key="label.firstName"/>
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z]*$</var-value>
</var>
</field>
<field
property="postalCode"
depends="required,mask">
<arg0 key="registrationForm.zip"/>
<var>
<var-name>mask</var-name>
<var-value>${zip}</var-value>
</var>
</field>
<field
property="phone"
depends="required,mask">
<arg0 key="registrationForm.phone"/>
<var>
<var-name>mask</var-name>
<var-value>${phone}</var-value>
</var>
</field>
</form>
</formset>
</form-validation>
새로운 검증 규칙을 만드는 부분이나 자바 스크립트를 이용하는 부분은 매뉴얼을 참고해서 해보시기를 바랍니다.
예제를 실행 하면 검증 규칙에 따라 여러 가지 유효성 검사(Validation Check)가 이루어 질 것 입니다.
댓글 없음:
댓글 쓰기