이 글의 문맥을 분석하여 이글루스에 있는 많은 글 중에서 관련성이 높은 글을 자동으로 검색해 낸 결과입니다.
제갈장비
dojeun.egloos.com
이글루스 | 로그인

라면 한그릇 드세요.. ㅋㅋ
by 제갈장비
카테고리
전체
제갈장비-Linux
제갈장비-TOMCAT
제갈장비-JAVA
--------------------
문서-Linux
문서-Powerbuilder
문서-JAVA
문서-ASP
문서-하드웨어
문서-EDPS
문서-MSSQL
--------------------
TIP-JAVA
TIP-Perl
TIP-ASP
TIP-Powerbuilder 01
TIP-Javascript
TIP-Excel
TIP-XML
TIP-MSAccess
TIP-PostgreSql
TIP-Windows
TIP-Linux
TIP-HTML
TIP-TOMCAT
--------------------
ETC
Secret
Util-Japan
미분류
최근 등록된 덧글
잘읽어 보았습니다. 그런..
by 이윤철 at 11/07
1000 666
by qhrlfeh77 at 05/21
123
by qhrlfeh77 at 05/21

by qhrlfeh77 at 05/21
감사합니다!! HashSet..
by 세레네이 at 04/06
찾고 있었던 자료인데 ..
by 나그네 at 01/09
감사합니다. 잘 보았습..
by 졸면죽는다 at 10/28
좋은 정보 정말 감사합니..
by 강성훈 at 10/22
좋은글 퍼가겠습니다.
by 정의진 at 09/29
이제야 봤습니다. iText..
by 제갈장비 at 08/09
이글루 파인더
Powered by egloos
rss

skin by 이글루스
2006년 09월 06일
[STRUTS]validator 기능 사용하기

정의 순서.

1.
 액션폼빈에Validator처리를 행한다는 기술을 한다.

2.
 액션폼빈의 각 속성에 적용할Validator룰을 validation.xml에 기술한다. Validator자체의 동작은 validator-rules.xml에 정의된다. validator-rules.xml은 사전에 정의되어 있는 것을 사용한다.

3.
 메세지 리소스 파일에validation.xml의 룰에 만족하지 않았을 때표시할 에러메세지를 기술한다.

4.
 에러 메세지를 표시하기위한 JSP프로그램을 작성한다.

5.
 struts-config.xml에 Validator관련 설정을 한다.
 

 

1. 어플리케이션 폼빈 작성

【ExValidatorForm.java】

package struts;

 

import org.apache.struts.validator.*;

import org.apache.struts.action.*;

 

//Validator를 사용하는 경우는ValidatorForm클래스를 계승합니다.

//그 외는 일반적인 어플리케이션 폼빈의 작성방법과 같습니다.

public final class ExValidatorForm extends ValidatorForm {

  private String requireV;

  private String validwhenV;

  private String countV;

  private String patternV;

  private String dateV;

  private String rangeV;

  private String emailV;

 

  public void setRequireV(String requireV)

    {this.requireV = requireV;}

  public void setValidwhenV(String validwhenV)

    {this.validwhenV = validwhenV;}

  public void setCountV(String countV)

    {this.countV = countV;}

  public void setPatternV(String patternV)

    {this.patternV = patternV;}

  public void setDateV(String dateV)

    {this.dateV = dateV;}

  public void setRangeV(String rangeV)

    {this.rangeV = rangeV;}

  public void setEmailV(String emailV)

    {this.emailV = emailV;}

 

  public String getRequireV() {return requireV;}

  public String getValidwhenV() {return validwhenV;}

  public String getCountV() {return countV;}

  public String getPatternV() {return patternV;}

  public String getDateV() {return dateV;}

  public String getRangeV() {return rangeV;}

  public String getEmailV() {return emailV;}

}
 

 

 

2. validation.xml 작성

【validation.xml】

<?xml version="1.0" encoding="ISO-8859-1" ?>

 

<!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>

  <formset>

    <!-- 적용할 어플리케이션 폼빈을 논리명으로 지정 -->

    <form name="ExValidator">

      <!-- required 룰 지정 -->

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

      </field>

      <!-- validwhen룰 지정

           validwhen의 조건식을 test변수로 지정

           *this*는 프로퍼티 validwhenV를 나타냄 -->

      <field property="validwhenV" depends="validwhen">

        <msg name="validwhen" key="errors.validwhen" />

        <var>

        <var-name>test</var-name>

        <var-value>

          ((*this* != null) and (countV != null))

        </var-value>

        </var>

      </field>

      <!-- minlength룰 지정

           minlength변수로 조건의 최저입력수를 지정 -->

      <field property="countV" depends="minlength">

        <var>

        <var-name>minlength</var-name>

        <var-value>4</var-value>

        </var>

      </field>

      <!-- mask룰 지정

           mask변수로 조건패턴을 지정 -->

      <field property="patternV" depends="mask">

        <var>

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

        <var-value>^[a-zA-Z]*$</var-value>

        </var>

      </field>

      <!-- date룰 지정

           datePattern변수로 조건의 일자 패턴을 지정 -->

      <field property="dateV" depends="date">

        <msg name="date" key="errors.date" />

        <var>

        <var-name>datePattern</var-name>

        <var-value>yyyy/mm/dd</var-value>

        </var>

      </field>

      <!-- intRange 룰 지정

           max변수, min변수로 조건의 범위를 지정 -->

      <field property="rangeV" depends="intRange">

        <var>

          <var-name>min</var-name>

          <var-value>4</var-value>

        </var>

        <var>

          <var-name>max</var-name>

          <var-value>16</var-value>

        </var>

      </field>

      <!-- email 룰 지정 -->

      <field property="emailV" depends="email">

      </field>

    </form>

  </formset>

</form-validation>
 

 

 

3. 메세지 리소스 파일 작성

【application.properties】
 

errors.required =requireV is wrong.<br>

errors.validwhen=validwhenV is wrong.<br>

errors.minlength=countV is wrong.<br>

errors.invalid  =patternV is wrong.<br>

errors.date     =dateV is wrong.<br>

errors.range    =rangeV is wrong.<br>

errors.email    =emailV is wrong.<br>
 
 

 

 

4. JSP 작성

【error.jsp】Validator룰에 만족하지 않았을 때에 표시할 에러화면

<%@ page contentType="text/html; charset=Shift_JIS" %>

<%@ taglib uri="/tags/struts-html" prefix="html" %>

<%@ taglib uri="/tags/struts-bean" prefix="bean" %>

 

<html:html>

<head><title>에러화면</title></head>

<body>

 

에러 메세지

<br>
<%-- <html:messages>태그로 에러 메세지를 표시합니다.

에러 메세지를 표시할 때는message속성을 false로 합니다. --%>

<html:messages id="msg" message="false">

  <%-- filter속성을 false로 함으로써 메세지에

       HTML태그를 쓸 수 있습니다. True로 하면 HTML태그가 있는 경우 치환문자(&lt;, &gt; 등)으로 변환됩니다. --%>

  <bean:write name="msg" ignore="true" filter="false"/>

</html:messages>

 

</body>

</html:html>
 

 

【exValidator.jsp】Validator체크를 하는데 사용될 입력폼 화면

<%@ page contentType="text/html; charset=Shift_JIS" %>

<%@ taglib uri="/tags/struts-html" prefix="html" %>

 

<html:html>

<head><title>Validator처리</title></head>

<body>

 

<html:form action="/ExValidator">

  필수입력

  <br>

  <html:text property="requireV" size="16"/>

  <br><br>

  validwhen

  <br>

  <html:text property="validwhenV" size="16"/>

  <br><br>

  문자수확인

  <br>

  <html:text property="countV" size="16"/>

  <br><br>

  패턴확인

  <br>

  <html:text property="patternV" size="16"/>

  <br><br>

  일자확인

  <br>

  <html:text property="dateV" size="16"/>

  <br><br>

  범위확인

  <br>

  <html:text property="rangeV" size="16"/>

  <br><br>

  메일 어드레스 확인

  <br>

  <html:text property="emailV" size="16"/>

  <br><br>

  <html:submit property="submit" value="송신"/>

</html:form>

 

</body>

</html:html>
 

 

 

5. struts-config.xml 작성

【struts-config.xml】

<?xml version="1.0" encoding="Shift_JIS"?>

<!DOCTYPE struts-config PUBLIC

 "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"

 "http://struts.apache.org/dtds/struts-config_1_2.dtd">

 

<struts-config>

 

 <!-- 액션폼빈 지정 -->

 <form-beans>

  <form-bean name="ExValidator"

             type="struts.ExValidatorForm" />

 </form-beans>

 

 <!-- 액션 클래스 지정 -->

 <action-mappings>

  <!-- Validator를 사용하는 경우validate속성을 true로 지정.

       Validator 에러를 표시할 화면을 input속성으로 지정 -->

  <action path="/ExValidator"

          type="struts.ExValidatorAction"

          name="ExValidator"

          scope="request"

          validate="true"

          input="/error.jsp">

   <forward name="info" path="/exValidator2.jsp"/>

  </action>

 </action-mappings>

 

 <!-- 메세지 리소스 파일 지정 -->

 <message-resources parameter="resources.application"/>

 

 <!-- Validator 지정. 프로퍼티 pathnames의 값에

      validator-rules.xml과 validation.xml을 지정 -->

 <plug-in className="org.apache.struts.validator.ValidatorPlugIn">

  <set-property property="pathnames"

   value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>

 </plug-in>

 

</struts-config>
 

 

 

응용처리

1. 복수조건지정
<file>태그의 depends속성에 값을 복수 지정함으로써 체크할 조건을 복수로 지정할 수 있습니다. email형식 체크와 필수입력 체크 등으로 조건을 조합하여 지정할 수 있습니다.

【depends속성에 복수조건 지정】

<!-- email형식 체크와 필수입력 체크를 지정 -->

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

</field>

2.에러 메세지에 변수를 사용
<field>태그에 <argn>태그(n은 0~3까지)를 지정함으로서 에러 메세지에 상황에 맞는 메세지 문자를 넣을 수 있습니다. 이 메세지 문자는 메세지 리소스 파일을 이용하여 지정할 수 있거나, 직접 넣거나, <var>태그의 변수지정으로 넣을 수 있습니다.

직접 넣거나, <var>태그의 변수를 지정하는 경우에는 <argn>태그의 리소스 속성을 “false”로 해야 합니다.

【<argn>태그 지정】

・・・・・

<field property="countV" depends="minlength">

  <!-- 메세지에 "minlength.msg"을 지정 -->

  <arg0 key="minlength.msg" />

  <!-- <var>태그를 이용하여 minlength를 지정 -->

  <arg1 key="${var:minlength}" resource="false" />

  <var>

    <var-name>minlength</var-name>

    <var-value>4</var-value>

  </var>

</field>

・・・・・

【메세지 리소스 파일】

errors.minlength={0} needs over {1} characters.

minlength.msg=minlength

3.메세지 리소스 파일의 키를 지정
<field>태그에 <msg>태그를 지정함으로서 참조되는 메세지 리소스 파일의

키를 변경할 수가 있다.

【<msg>태그 지정】

・・・・・

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

  <!--에러시의 메세지 리소스 파일의 키를

       "errors.original.required" 로 변경-->

  <msg name="required" key="errors.original.required" />

</field>

・・・・・

4.동적 액션폼빈에Validator를 사용
동적 액션폼빈에 Validator를 사용할 수 있다.

struts-config.xml의 태그의 타입속성에DynaValidatorForm을 지정하는 것만으로 사용할 수 있다.

다른 부분은 액션폼빈의Validator 사용방법과 동일하다.

【<form-bean>태그에 DynaValidatorFrom을 지정】

・・・・・

  <form-beans>

    <!-- type속성에 DynaValidatorForm을 지정 -->

    <form-bean

     name="DynaForm"

     type="org.apache.struts.validator.DynaValidatorForm">

     <form-property

      name="requireV"

      type="java.lang.String" />

    </form-bean>

  </form-beans>

 

  <action-mappings>

    <action path="/ExValidator"

            type="struts.ExValidatorAction"

            name="DynaForm"

            scope="request"

            validate="true"

            input="/error.jsp">

      <forward name="info" path="/exValidator2.jsp"/>

    </action>

  </action-mappings>

・・・・・

# by 제갈장비 | 2006/09/06 13:37 | 문서-JAVA | 트랙백 | 덧글(1)
트랙백 주소 : http://dojeun.egloos.com/tb/317876
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 윤상봉 at 2008/07/21 10:07
정말 캄솨 합니다.
이렇게 정리가 잘된 자료을 올려 주시다니.... 짱.

:         :

:

비공개 덧글

◀ 이전 페이지 다음 페이지 ▶

이글루링크 추가하기
()을(를)
이글루링크로 추가하시겠습니까? 추가하시려면 그룹선택을 하세요.
(그룹선택 하지 않는 경우, 최상단 목록에 추가됩니다.)
그룹선택 :
이글루링크 취소