StrutsでFormに値を突っ込むときのあれこれ
最近結構使ったのでメモ。
以下のコードたちは基本的に、記憶頼り、脳内構築で
動作確認してないので注意。
(1)基本
<input type='text' name="TestForm" property="test">
なんて書くと、submitしたときに
public class TestForm extends Actionform { String test = null; public void setTest(String test) { this.test = test; } public String getTest() { return test; } }
ってあるFormのtestに値を突っ込めるのはStrutsさんの基本。
なんとなく、id、name、propertyの順で書くと分かりやすい気がする。
String testId = TestForm.test;
見たいな感じで。
(2)プロパティにクラス
そして、こんな風に書くと
<input type='text' name="TestForm.TestBean" property="test">
public class TestForm extends Actionform { TestBean testBean = new TestBean(); public void setTestBean(TestBean testBean) { this.testBean = testBean; } public String getTestBean() { return testBean; } } public class TestBean { String test = null; public void setTest(String test) { this.test = test; } public String getTest() { return test; } }
こんな感じで持ってる、TestBeanの中のtestに値を突っ込める。
new TestBean();
newはしておかないと、何とか例外が出る。
(3)プロパティに配列とかリスト
それからそれから
<input type='text' name="TestForm[0]" property="test"> <input type='text' name="TestForm[1]" property="test">
こんな風にも書くことができて
public class TestForm extends Actionform { List<String> testList = new ArrayList<String>(); public void setTestList(List<String> testList) { this.testList = testList; } public void getTestList() { return testList; } public String getTest(int index) { return testList.get(i); } }
リスト(配列でも良いはず)の中に値を突っ込める。
property="XXXXX"
と
getXXXXX
のXXXXXが対応してるから、好きな名前をつけられたはず。
あと、実際にはgetterであうとおぶばうんずを起こさないような実装をする必要がある
こんな感じかしら?
public String getTest(int index) { for (int i = testList.size(); i < index; i++) { testList.add(new String()); } return testList.get(index); }
(4)プロパティにクラスのリスト
最後に(2)と(3)の組み合わせ。
<input type='text' name="TestForm[0].TestBean" property="test"> <input type='text' name="TestForm[1].TestBean" property="test">
public class TestForm extends Actionform { List<TestBean> testBeanList = new ArrayList<TestBean>(); public void setTestBeanList(List<TestBean> testBeanList) { this.testBeanList = testBeanList; } public String getTestBean(int index) { return testBeanList.get(i); } } public class TestBean { //(略) }
iterateタグ使ってたり
動的に要素が増えるようなjavascriptを組んでたりする場合にとても便利