ホーム » ブログ » Struts2でJSPページ入力した値をFormにセットするサンプル
このエントリーをはてなブックマークに追加
@2013/06/27

スポンサーリンク
struts1.xはJSPで入力したパラメータを自動的にFormbeanにセット、Actonクラスはform.getXxxName()やform.setXxxName("..")のようなシンプルな処理方法です。
struts2.xは大きく変わりました、FormBeanの役割はAction側に任せ、JSPのパラメータのやり取りができるようにしました。

しかし、Strtus1を使い慣れ、Struts2でもFormBeanを使いたい方もいらっしゃってると思います。
以下はstruts2でFormBeanを使ってPageのパラメータを取るのサンプルです。

まず、Test.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!-- strut2_Action_Form_param.jsp -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Struts2サンプル</title>
</head>
<body>

<FORM ACTION="">
	NAME:<input type="text" name="testForm.userName" />
	AGE:<input type="text" name="testForm.age" />
	SEX:<input type="text" name="testForm.sex" />
	HISTORY1:<input type="text" name="testForm.personalHistory" />
	HISTORY2:<input type="text" name="testForm.personalHistory" />
	HISTORY3:<input type="text" name="testForm.personalHistory" />
	
	<input type="hidden" name="mode" value="init" />
	
	<input type="submit" value="SUBMIT" />
</FORM>
</body>
</html>

次は、TestForm.java
import java.util.List;

public class TestForm {
	
	private String userName;
	private String age;
	private String sex;
	private List<String> personalHistory;
	
	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public List<String> getPersonalHistory() {
		return personalHistory;
	}

	public void setPersonalHistory(List<String> personalHistory) {
		this.personalHistory = personalHistory;
	}

}

最後、TestAction.java
import java.util.List;

public class TestAction {
	
	private String mode;
	private TestForm testForm = new TestForm();

	public String execute() throws Exception {

		String name = testForm.getUserName();
		List<String> history = testForm.getPersonalHistory();
		
		for(int i=0; i < history.size(); i++){
			System.out.println("history" + i + "=" + history.get(i));
		}

		// ..................

		return "success";
	}

	public String getMode() {
		return mode;
	}

	public void setMode(String mode) {
		this.mode = mode;
	}

	public TestForm getTestForm() {
		return testForm;
	}

	public void setTestForm(TestForm testForm) {
		this.testForm = testForm;
	}

}


1.Test.jspでのname属性のところにActionで使う変数名.Fromのフィールド名です。
2.Test.jspでのtestForm.personalHistoryが複数があるので、TestAction.java側はList<String> として取得できることは、便利ですね。

♪ 当記事がお役に立ちましたらシェアして頂ければ嬉しいです。
2人
このエントリーをはてなブックマークに追加


★ 当記事を閲覧の方は下記の【関連記事】も閲覧していました。

お名前:

 

EMAIL:

 

URL:

 

認証コード:

zanmai.net-safecode

 


※会員の方は認証コードを要らないから、新規登録をオススメ!

check