- PR -

iterateを使用してプロパティをtextタグの初期値に設定したい

投稿者投稿内容
うるるとさらら
会議室デビュー日: 2003/10/07
投稿数: 9
投稿日時: 2003-10-07 13:21
初めての質問です。
つたない質問の仕方だと思うのですが、よろしくお願いします。


 以下のように、サーバからデータを取得して、アクションフォームクラスの
プロパティ(List型)に設定します。(DBAはサーバに接続するBean,StringsClassは、
LabelValuBeanの3列以上を設定するBeanと考えてください(リストのプロパティには
var1,var2,var3・・・というフィールド名がつきます)


(アクションクラス MenuAction.java)------------------------------------------

MenuForm lform = (MenuForm)form;
LinkedList kojinList = new LinkedList();
String Str;
DBA db = new DBA();
db.open();
Str="SELECT T001KojinKihon.SyainNo, M002Syozoku.SyozokuName,(省略)"
java.sql.ResultSet rs = db.getResultSet(Str);
Str = "";

while(rs.next()){
kojinList.add( new StringsClass(rs.getString("SyainNo"),
rs.getString("SyozokuName"));
}
db.close();

lform.setKojinList(kojinList);
--------------------------------------------------------------------------

(アクションフォームクラス MenuFrom.java)------------------------------------

private List kojinList;

public List getKojinList() {return kojinList;}
public void setKojinList(List list) {this.kojinList = list;}

---------------------------------------------------------------------------

☆ここで質問です。iterateを使用して、jspで表示させる際に、
 以下はうまくいくのですが、

<logic:iterate id="data" name="menuForm" property="kojinList">
<tr>
<th bgcolor="#CCCCCC">社員番号</th>
<td><bean:write name="data" property= "var1" /></td>
<th bgcolor="#CCCCCC">所属</th>
<td><bean:write name="data" property= "var2" /></td>
</tr>

☆社員番号、所属をテキストボックスにして、その初期表示にプロパティの
 値を設定するにはどうすればよいのでしょうか?

ちなみに
<th bgcolor="#CCCCCC">社員番号</th>
<td>
<html:text property="syokuiName1" size="8" maxlength="10"
value="<bean:write name="data" property="var1" />"/>
</td>

ではもちろん無理ですが、このようなイメージで設定できないものでしょうか・・・。

勉強不足で申し訳ありませんが、なにかヒントを頂けないでしょうか。
よろしくお願いいたします。
たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2003-10-07 13:41
value="<%=data.var1 %>"
とか
でくのぼう
大ベテラン
会議室デビュー日: 2003/10/06
投稿数: 162
投稿日時: 2003-10-07 13:42
value="data.var1" などと書けませんでしたっけ。
でくのぼう
大ベテラン
会議室デビュー日: 2003/10/06
投稿数: 162
投稿日時: 2003-10-07 13:53
かぶってしまった。

ちなみに下記のページが参考になると思います。

http://jakarta.apache.org/struts/api/org/apache/struts/taglib/html/package-summary.html#package_description
うるるとさらら
会議室デビュー日: 2003/10/07
投稿数: 9
投稿日時: 2003-10-07 14:44
たーぞうさん、でくのぼうさん、
早速のご回答、ありがとうございます!!(返答の早さに感激)

すいません・・・以下のように設定してみましたが、エラーが出てしまい
ました。(でくのぼうさんからご紹介いただいたページは現在翻訳して
調査中です)

----------------------------------------------------------------------
<logic:iterate id="data" name="gijutsuMenuForm" property="kojinList">
<tr>
<th bgcolor="#CCCCCC">社員番号</th>
<td>
    <html:text property="syokuiName1" size="8" maxlength="10"
    value="<%=data.var1%>"/>
</td>
</tr>
</logic:iterate>
----------------------------------------------------------------------

エラー
----------------------------------------------------------------------
org.apache.jasper.JasperException: JSPのクラスをコンパイルできません
JSPファイル: null の中の行: -1でエラーが発生しました

生成されたサーブレットのエラーです:
[javac] Compiling 1 source file
[javac] E:\Program Files\Apache Group\Tomcat 4.1\webapps\step2
\work\org\apache\jsp\jsp\gijutsu\gijutsuNyuuryoku_jsp.java:180:
シンボルを解決できません。

[javac] シンボル: 変数 var1
[javac] 場所 : java.lang.Object の クラス
[javac] _jspx_th_html_text_0.setValue(data.var1 );
[javac] ^
[javac] エラー 1 個
---------------------------------------------------------------------------

iterateとtextタグの属性をもう一回見直して、いろいろ試してみましたが、同様のエラーが
発生します。設定が足りないのでしょうか・・・

((-_-質問をする度、自分の力不足でなさけなくなります・・・)
でくのぼう
大ベテラン
会議室デビュー日: 2003/10/06
投稿数: 162
投稿日時: 2003-10-07 14:50
<%= %> は要らないです。
うるるとさらら
会議室デビュー日: 2003/10/07
投稿数: 9
投稿日時: 2003-10-07 15:14
----------------------------------------------------------------------
でくのぼうさん、何度もすいません。

1回目の返信の際に以下のように試してはみたのですが、
テキストボックスの初期値には [data.var1]とそのまま
表示されてしまいました。
(textタグのname属性・property属性に値を設定しました。)

----------------------------------------------------------------------
<logic:iterate id="data" name="gijutsuMenuForm" property="kojinList">
<tr>
<th bgcolor="#CCCCCC">社員番号</th>
<td>
    <html:text name="gijutsuMenuForm" property="kojinList" size="8"
                      maxlength="10" value="data.var1"/>
</td>
</tr>
</logic:iterate>
----------------------------------------------------------------------

data.var1がiterate内で使用するtextタグのvalueでうまく読み込まれないのです。
親切に教えてくださっているのに、なかなか解決できずに申し訳ありません・・・。
でくのぼう
大ベテラン
会議室デビュー日: 2003/10/06
投稿数: 162
投稿日時: 2003-10-07 15:23
うーん、valueアトリビュート内で data.var1 とは書けないのですね。
失礼しました。

では <%= data.getVar1() %> などと指定すれば良いかもしれませんね。
iterate タグの type 属性に data のクラス名をパッケージ名からつけて
指定すれば、うまくいくかと思います。

<logic:iterate type="foo.bar.DataClassName">
といった感じです。

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