sitelink1  
sitelink2  
extra_vars5  
extra_vars6  
Life cycle of an ActionForm


1. ValidatorForm 클래스를 상속받는다.
validate.xml에서 정의하는데에 한계가 있을 경우에는 reset과 validate메서드를 오버라이딩 하여 다음과 같이 재정의한다. validate.xml에서 정의 가능할 경우에는 위의 두 함수를 오버라이딩 할 필요는 없다.


public class CalenderEditForm extends ValidatorForm{

    public ActionErrors validate(ActionMapping arg0, HttpServletRequest request) {
        ActionErrors errors = super.validate(arg0, request);
        if (errors == null)
            errors = new ActionErrors();
        if (title == null || title.equals("")) {
            errors.add("title", new ActionError("errors.select.required",
                    "タイトル"));
        }
        return errors;
    }
    
    public void reset(ActionMapping mapping, HttpServletRequest request) {
                super.reset(mapping, request);
    }
}


2. reset과 validate메서드를 오버라이딩 한 경우는 application.properties 파일에 다음과 같은 출력할 메세지를 추가한다.

errors.select.required=<li>{0}はかならず選択してください。</li>



3. struts-config.xml 파일에서 액션태그 정의시 validate="true" 로 한다.

    <action
      path="/calendar_write"
      type="action.calender.CalenderWriteAction"
      name="calenderEditForm"
      scope="request"
      input="/view/calender/schedule_edit.vm"
      unknown="false"
      validate="true"
    >
      <forward
        name="next"
        path="/show_calendar_home.do"
        redirect="false"
      />
    </action>



4. validation.xml 에는 다음과 같은 태그를 삽입

  <formset>
          <form name="calenderEditForm">
                  <field property="title" depends="required">
                          <arg0 key="タイトル" resource="false" />
                  </field>
          </form>
  </formset>



5. 액션폼을 사용하는 액션클래스에서는 다음과 같이 클래스 상단에 주석을 작성한다.

/**
* @struts.action
*         path="/calendar_write"
*         name="calenderEditForm"
*         scope="request"
*         validate="true"
*         input="/view/calender/schedule_edit.vm"
* @struts.action-forward
*         name="next"
*         path="/show_calendar_home.do"
*         redirect="true"
*/
public class CalenderWriteAction extends Action




6. vm파일에서는 다음과 같은 코드를 삽입하면 validate실패시 메세지를 출력하게 된다.

#if($errors.exist())
    $!errors.msgs
#end