struts-config.xml로 검색한 결과 :: 시소커뮤니티[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

회원가입 I 비밀번호 찾기


SSISO Community검색
SSISO Community메뉴
[카페목록보기]
[블로그등록하기]  
[블로그리스트]  
SSISO Community카페
블로그 카테고리
정치 경제
문화 칼럼
비디오게임 스포츠
핫이슈 TV
포토 온라인게임
PC게임 에뮬게임
라이프 사람들
유머 만화애니
방송 1
1 1
1 1
1 1
1 1
1

struts-config.xml로 검색한 결과
등록일:2008-03-16 10:12:05
작성자:
제목:struts validator 사용하기


스크립트로 폼 데이터 검증하는것이 편하지만(?)

 

스크립트 오류나 전송상의 문제로 검증처리가

 

제대로 되지 않는 상태로 서버에 넘어오는 경우가 있다.

 

이렇게 되면 서버쪽에 검증 처리가 없기때문에

 

문제가 되곤 한다.

 

직접 처리하면 까다로울 수도 있지만..

 

스트럿츠 프레임ㅤㅇㅝㅋ 내에서 이런 부분을 처리해 주니 고마울 나름이다.

 

다만 설정이 까다롭다..

 

struts-config.xml 중 action 선언--

<action path="/submit" type="net.sung2li.validator.ValiAction" name="valiForm" scope="request" validate="true" input="/input.do">
 <!--  input 속성에 해당 액션을 호출하는 인풋액션이나 인풋페이지를 넣어 준다. validate 속성을 true로 해야 데이터 검증이 들어간다. -->
  <forward path="/success.jsp" name=".success" />
 </action>

--

 

struts-config.xml 중 메시지 파일 선언과 플러그인 선언 --

<!-- 메시지 파일이랑 플러그 인 경로를 설정한다. 데이터 검증 처리에 나오는 메시지는 메시지 파일에서 조합되어 나온다. -->
 
<message-resources parameter="net.sung2li.validator.MessageResources" />
 
  <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property property="pathnames" value="/WEB-INF/conf/validator-rules.xml,/WEB-INF/conf/validation.xml" />
    <set-property property="stopOnFirstError" value="true" />
  </plug-in>

--

 

이 부분까지 되었다면 해당 경로에 파일들을 배치해야된다.

 

우선 validation-rule.xml 파일은 스트럿츠 프래임ㅤㅇㅝㅋ을 받으면 그안에 존재 한다. 이것을 카피한다.

 

카피한 후에 validation-rule.xml 파일을 열어보면 주석에 메시지파일에 반드시 넣어야 되는 구문이 적혀있다

 

이 부분을 복사해 메시지파일을 만든다.

 

validation.xml 은 폼빈이랑 일치 시켜야 되기 때문에 나중에 작업한다.

 

폼빈 생성(ValiForm) 선언부 --

//기존 ActionForm를 받는 것이 아니라 ValidatorForm을 받아야 정상 작동한다.
public class ValiForm extends ValidatorForm implements Serializable {

--

 

액션 클래스에서는 데이터 검증 처리를 플러그인 단에서 미리 처리하므로 기존 로직 그대로

 

진행하면 된다.

 

폼빈이 만들어 지면 validation.xml 를 만든다

 

validation.xml 중에서 폼 선언부--

<form name="valiForm">
   <!-- struts-config.xml 에 선언된 폼빈 이름이랑 일치 시킨다. -->
      <field property="name" depends="required,minlength">
        <arg key="valiForm.name.displayname" position="0"/>
        <arg name="minlength" key="${var:minlength}" resource="false" position="1"/>
  <!-- arg값은 메시지 파일에 {n}과 조합된다. -->
        <var>
          <var-name>minlength</var-name>
          <var-value>2</var-value>
        </var>
      </field>
      <field property="email" depends="required,email">
        <arg key="valiForm.email.displayname" />
      </field>
    </form>

 

--

조금 더 찾아보면 mask를 사용해 정규식으로 데이터를 검증할 수도 있다.

 

그리고 데이터간의 비교도 가능하다.

 

 

이제 입력받는 파일을 만든다

 

스트럿츠의 데이터 검증은 테그 라이브러리를 받드시 사용한다. 이유는 검증처리중 오류가 발생시

 

해당 폼 객체로 이전 결과물을 넣어주는데 테그 라이브러리를 사용하지 않으면 결과물을 받을 수 없다.

 

input.jsp 중 body --

<!-- 오류 메시지를 보여주는 부분 -->
  <logic:messagesPresent>
     <ul>
     <html:messages id="error">
        <li><bean:write name="error"/></li>
     </html:messages>
     </ul><hr />
  </logic:messagesPresent>

  <html:form action="submit">
   <table border="0">
    <tr>
     <td>이름</td>
     <td><html:text property="name" /></td>
    </tr>
    <tr>
     <td>이메일</td>
     <td><html:text property="email" /></td>
    </tr>
    <tr>
     <td colspan="2"><html:submit property="submit" /></td>
    </tr>
   </table>
  </html:form>

--

 

위 설명은 중요한 부분만 집고 넘어간 것이다.

 

첨부한 소스에 각 파일 마다 주석을 붙여 놓았다.

 

 

3년 전에 스트럿츠를 처음 사용하면서 썼던 부분이지만

 

그때 이후로 사용을 않해오다가 이제서야 필요성을 느낀다.

 

아무래도 아직까지는 보석을 알아보는 눈을 가지지 못한 모양이다..