Apache Struts - データの受け渡し(3) 画面からの入力値を受け取る(ActionFormBean)

Advertisement

ActionFormBean

ActionFormBeanを利用することで、画面からの入力値とBeanのマッピングを簡単に実現することが出来ます。入力した値が対応するBeanのプロパティに自動的に格納されるので、ViewとModel間でのデータのやり取りを意識することがなくなります。

サンプルコード

データ送信元JSP
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>

<html:html locale="true">
<head>
<title>result</title>
</head>
<body>

<html:form action="TestAction">
    <html:text property="name" />
    <html:submit value="submit" />
</html:form>

</body>
</html:html>
アクションTestActionを定義したformを設置します。formにはテキストボックスとsubmitボタンがあり、テキストボックスはnameという名前になっています。

ActionFormBean(TestBean)
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionForm;

public class TestBean extends ActionForm{
    private String name;

    public TestBean(){
    }

    /**
     * @return name を戻します。
     */
    public String getName() {
        return name;
    }

    /**
     * @param name name を設定。
     */
    public void setName(String name) {
        this.name = name;
    }
}
org.apache.struts.action.ActionFormクラスを継承しています。プロパティnameとそれに対するsetter/getterメソッドが定義されています。

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

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">

<struts-config>
    <form-beans>
        <form-bean
            name="TestBean"
            type="TestBean">
       </form-bean>
    </form-beans>

    <action-mappings>
        <action path="/TestAction"
                   type="TestAction"
                   name="TestBean"
                   scope="request">
            <forward name="success" path="/pages/success.jsp" redirect="false"/>
        </action>
    </action-mappings>
</struts-config>
コンフィギュレーションファイルを利用して、画面とActionFormBeanのマッピングを行います。
form-beansで使用するActionFormクラスを指定します。そしてactionの定義時にname属性に定義したform-bean名を指定します。

送信元JSPでsubmitボタンが押下されるとTestActionクラスのexecuteメソッドが実行されますが、その際にTestBeanが自動生成されて引数として渡されます。

TestActionクラス
import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

public class ValidateAction extends Action {
    public ActionForward execute(ActionMapping map, ActionForm frm,
            HttpServletRequest request, HttpServletResponse response) {

        TestBean bean = (TestBean)form;
        System.out.println(bean.getName());

        return map.findForward("success");
    }
}
スーパークラスのActionFormが渡されるので、キャストして使用します。

Advertisement

ショートカット

634トップページ
このカテゴリのトップページに戻る
634ラボ

サイト検索

Google

Web サイト内

Y!ログール