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> として取得できることは、便利ですね。
♪ 当記事がお役に立ちましたらシェアして頂ければ嬉しいです。
★ 当記事を閲覧の方は下記の【関連記事】も閲覧していました。
zanmai @2016年03月31日
» ①②③④の順で設定できるはず。…