Apache Struts - データの受け渡し(3) 画面からの入力値を受け取る(ActionFormBean)AdvertisementActionFormBean
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ブログ ・このカテゴリのトップページに戻る ・Incubator(Pukiwiki) ・634ラボ UIコレクションギャラリー ZO-3ジェネレーター サイト検索Y!ログールビリヤード |