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

Advertisement

DynaActionForm

画面からの入力値を受け取るために毎回ActionFormBeanを定義していると、相当な工数がかかります。DynaActionFormを使用すると、ActionFormBeanを定義せずにデータの引渡しを行うことが可能になります。

サンプルコード

<%@ 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という名前になっています。

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="org.apache.struts.action.DynaActionForm">
             <form-property name="name" type="java.lang.String" initial="" />
       </form-bean>
    </form-beans>

    <action-mappings>
        <action path="/TestAction"
                type="struts.action.TestAction"
                name="testBean"
                scope="request"
                >
            <forward name="success" path="/result.jsp" redirect="false"/>
        </action>
    </action-mappings>
</struts-config>
form-beanでtypeにorg.apache.struts.action.DynaActionFormを指定します。そのタグ内でform-propertyとしてプロパティを指定します。
今回のサンプルでは送信元JSPにnameという名称のテキストボックスがあります。この値を受け取るためにjava.lang.String型のnameプロパティを定義しました。

actionクラス(TestAction.java)
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;
import org.apache.struts.action.DynaActionForm;

import struts.bean.TestBean;

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

        DynaActionForm form = (DynaActionForm)frm;
        System.out.println((String)form.get("name"));

        return map.findForward("success");
    }
}
Actionクラスでは受け取ったActionFormをorg.apache.struts.action.DynaActionFormにキャストします。値の受け取りにはコンフィギュレーションファイルで定義したプロパティをget()メソッドを利用します。

Advertisement

ショートカット

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

サイト検索

Google

Web サイト内

Y!ログール