Apache Struts - データの受け渡し(4) 画面からの入力値を受け取る(DynaActionForm)AdvertisementDynaActionForm
画面からの入力値を受け取るために毎回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ラボ サイト検索Y!ログール |