Validation의 기본

validation 워크플로우를 스텝바이스텝으로 알아 보자.

Step 1

입력 폼을 작성한다.

    <title>Validation - Basic</title>


<b>What is your favorite color?</b>

<s:form method="post">
    <s:textfield label="Name" name="name"/>
    <s:textfield label="Age" name="age"/>
    <s:textfield label="Favorite color" name="answer"/>


Step 2

action클래스를 작성한다.

public class QuizAction extends ActionSupport {

    private static final long serialVersionUID = -7505437345373234225L;

    String name;
    int age;
    String answer;

    public String getName() {
        return name;

    public void setName(String 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;

Step 3

validator를 작성한다. 

    아래와 같이 DOCTYPE 정의를 XXX-validation.xml 파일의 첫 번째 줄에 기술한다.
    <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "">
    <field name="name">
        <field-validator type="requiredstring">
            <message>You must enter a name</message>
    <field name="age">
        <field-validator type="int">
            <param name="min">13</param>
            <param name="max">19</param>
            <message>Only people ages 13 to 19 may take this quiz</message>

Step 4

struts.xml파일에 "input" 이라는 result정의가 존재해야 한다. "input" result가 validation이 실패했을 때 표시할 화면/또는 결과가 된다.

<action name="HelloWorld" class="tutorial.HelloWorld">
<result name="success">/tutorial/createconfirm.jsp</result>
<result name="error">/tutorial/error.jsp</result>
<result name="input">/tutorial/create.jsp</result>

"input"이라는 result가 정의 되어 있지 않으면 validation가 실패했을 때 "No result defined for action and result input"라는 에러가 발생한다.