2013년 8월 12일 월요일

struts2 Validator 및 예제

struts2 Validation Check


오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(신입사원채용무료교육, 오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷)  
 
Struts2에서는 유효성 검사를 할 수 있는 몇 가지 방법을 제공하는데 다음과 같다.
 
-. Action execute 메소드에서 유효성 검사를 할 수 있다. 하지만 이렇게 하게 되면 execute 메소드 본연의 기능보다 유효성 검사 부분에 많은 코드가 할당 되므로 바람직 하지는 않다.
 
-. Validateable  인터페이스를 구현하고 workflow 인터셉터를 붙이면 execute() 메소드에서 유효성검사를 하지 않고 별도의 validate() 메소드에서 유효성 검사를 할 수 있다. 이 경우는 Validation Check가 복잡하고 다른 Action에서 재사용되지 않는 Validation Check인 경우 유용하다.
 
-. 3번째 방법은 유효성 검사 프레임워크를 이용하는 방법인데 유효성 검사를 위한 부분을 별도로 Action에서 분리하여 Validator 클래스로 만드는 방법이다. Vaidation Intercaptor를 붙이고 XML 필드를  validator로 매핑 한다.
 
예제를 따라하자.
 
1. Action 파일을 작성
 
package quiz.action;
 
import com.opensymphony.xwork2.ActionSupport;
 
public class QuizAction extends ActionSupport {
    private String name;
    private int age;
    private String answer;
   
    public String execute() throws Exception {
          return SUCCESS;
    }
 
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getAnswer() {
        return answer;
    }
    public void setAnswer(String answer) {
        this.answer = answer;
    }
}
 
2. Action-Validation.xml 파일 작성
 
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
 
<validators>
           <field name="name">
                     <field-validator type="requiredstring">
                                <message>이름을 반드시 입력해야 합니다.</message>
                     </field-validator>
           </field>
           <field name="age">
                     <field-validator type="int">
                                <param name="min">20</param>
                                <param name="max">30</param>
                                <message>20 ~ 30 나이에 해당하는 사람만 퀴즈에 응답할 수 있습니다.</message>
                     </field-validator>
           </field>
</validators>
 
 
3. JSP 파일
 
<%@ page contentType="text/html; charset=utf-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
 
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>quiz</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<s:head />
</head>
<body>
<b>당신이 가장 좋아하는 색은?</b>
<p/>
<s:form action="quiz">
    <s:textfield label="이름" name="name"/>
    <s:textfield label="나이" name="age"/>
    <s:textfield label="좋아하는 색" name="answer"/>
    <s:submit/>
</s:form>
</body>
</html>
 
 
4. struts.xml
 
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
   
<struts>
    <package name="struts2" extends="struts-default">           
      <action name="quiz" class="quiz.action.QuizAction">
<interceptor-ref name="params"/>
     <interceptor-ref name="validation"/>
                     <result>/quiz/quiz.jsp</result>
                     <result name="input">/quiz/quiz.jsp</result>
             </action>                
    </package>
</struts>
 
 
5. 결과확인
 


댓글 없음:

댓글 쓰기