- PR -

bean:write タグのpropertyにList型の値を指定する方法について

1
投稿者投稿内容
SOTA
会議室デビュー日: 2007/04/18
投稿数: 16
投稿日時: 2007-07-05 18:55
java初心者です。

今、struts + s2Daoにて簡単な紹介アプリを作成しているのですが、<bean:write>タグのproperty属性にList型のプロパティーを指定したいのですが、うまくいきません。下記のように記述しているのですが、このような記述はできないのでしょうか?

<bean:write name="testForm" property="testValueList[0].empNo"/>

ちなみにtestForm(form bean)上にはtestValueListをList型で定義していますが、各項目については、項目数が多いために定義しないでなんとかjspで表記できないかと試行錯誤しておりますが、私の力では無理でした。
ちなみにempNoはtestForm上には記述していないため1件目の1番目の項目のような指定の仕方ができないかと思い testValueList[0][1]のような記述もいろいろと試してみたのですが、無理でした。

初心者のため意味がわからない文章になっているかもしれませんが、もし何か知っているかたがいらっしゃいましたら教えてください。
よろしくお願いいたします。
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2007-07-05 19:03
beanではなく、logicタグライブラリを調べてみてください。
朝日奈ありす
大ベテラン
会議室デビュー日: 2007/05/02
投稿数: 189
お住まい・勤務地: 最北の地
投稿日時: 2007-07-06 00:43
Listにはいっているオブジェクトのクラス。
エラーログなども提示していただけると理由がすんなりわかる場合が殆どです。

testValueList に対するゲッターだと リストが読み込めていない。
empNoに対するゲッター〜だと オブジェクトの中にそういうフィールドが存在しない。

ぱっとみでもこれぐらいのエラーは思いつきます。
ですが、特定はしきれません。

あと下記の2種類の記述は大体同じ意味です。がすべてが logic タブライブラリの使用
で解決できるかというとそうでもありません。
<bean:write name="testForm" property="testValueList[0].empNo"/>
<bean:write name="testForm" property="testValueList[1].empNo"/>
<bean:write name="testForm" property="testValueList[2].empNo"/>
<bean:write name="testForm" property="testValueList[3].empNo"/>

<logic:iterator name="testForm" property="testValueList" id="testValue">
<bean:write name="testValue" property="empNo"/>
</logic:iterator>
SOTA
会議室デビュー日: 2007/04/18
投稿数: 16
投稿日時: 2007-07-06 09:55
いろいろとご返事ありがとうございます。

ご指摘の通りlogicタグライブラリを利用して記述してみたのですが、やはりうまくいきませんでした。

-----------------------------------------------------------------------------
Listにはいっているオブジェクトのクラス。
エラーログなども提示していただけると理由がすんなりわかる場合が殆どです。
-----------------------------------------------------------------------------

とのことですが、ListにはいっているオブジェクトのクラスとはListをセットしているクラスのことでしょうか?それともformクラスのことでしょうか?一応両方記載しておきます。

private void setTestValuesToForm(
TestForm selectForm, List testList,
TestForm searchForm, HttpServletRequest request) {
List valueList = new ArrayList();

Iterator it = basicinfoList.iterator();
while (it.hasNext()) {
Test test = (Test) it.next();
TestValue value = new TestValue();
value.setTest(test);

valueList.add(test);
}
selectForm.setTestValueList(valueList);
selectForm.setId("0");
}

ちなみにformクラスは下記のように定義してます。

private List _testValueList = new ArrayList();

public List getTestValueList() {
return this._testValueList;
}
public void setTestValueList(List testValueList) {
this._testValueList = testValueList;

リストの中の各項目については、s2daoのcolumnアノテーションで定義しているだけで、実行結果をそのままList型のオブジェクトにセットしているので、empNoをlogicやbeanタグで認識できるでしょうか?

エラーログについては、素人で申し訳ないのですが、jspのエラーログはどこに出力されているのでしょうか?実行すると真っ白な画面がでるだけで、見た目はエラーがでていません。
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2007-07-06 10:42
ログは、特に指定していないなら、CATALINA_HOME\logsに出力されています。

「それだけじゃない」ってのは、確かにご指摘の通りです。m(_ _)m
SOTA
会議室デビュー日: 2007/04/18
投稿数: 16
投稿日時: 2007-07-06 10:52
解決しました。

<bean:write name="testForm" property="testValueList[0].test.empNo"/>

と記述することで、正常に表示されるようになりました。
いろいろとありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)