- PR -

Struts iterateの使用について

1
投稿者投稿内容
たま
ベテラン
会議室デビュー日: 2002/07/19
投稿数: 60
投稿日時: 2003-12-08 23:53
こんばんわ。
Struts初心者なのですが、JSPでiterateタグを使用し、HTMLテーブルの各行を出力の際、JSP上で処理は動いているようなのですが、iterateで回している<TR>〜</TR>の行が丸々行ごと表示されないことがあるという現象に困っております。

-------------------------------------------------------------------------------
<logic:iterate ・・・・・>
<tr><select ・・・・・>
<option value="action1.do?prm=<bean:write name="frm" property="val"/>">選択肢1</option>
<% if ("all".equals(session.getAttribute("PARAM").toString())) { %>
<option value="action2.do?prm=<bean:write name="frm" property="val"/>">選択肢2</option>
<% } %>
</select ・・・・・></tr>
</logic:iterate>
-------------------------------------------------------------------------------

例えば、上記ソースですと、iterateの参照が3件存在する場合、system.outにてサーバ側には
3回通過が確認されました。
しかし、JSP側にはTRでの行は2行しか表示されません。
ただし、上記現象はかなり不安定で正常に出力される場合もあります。
ロジックを以下のように変えると、潜在でまた、行が減るかもしれませんが上手くいくように見えます。
-------------------------------------------------------------------------------
<logic:iterate ・・・・・>
<tr><select ・・・・・>
<option value="action1.do?prm=<bean:write name="frm" property="val"/>">選択肢1</option>
<option value="action2.do?prm=<bean:write name="frm" property="val"/>">選択肢2</option>
<% } %>
</select ・・・・・></tr>
</logic:iterate>
-------------------------------------------------------------------------------

何か、iterate使用時に、スクリプトレットとの相性や何かがあるのでしょうか?
また、strutsでの経験が私にない為、コーディングの不足があるのでしょうか?

ご存知の方がいらっしゃいましたらご教授お願いいたします。

環境:Struts1.1、Java1.4.1
パルプ
ベテラン
会議室デビュー日: 2003/06/18
投稿数: 59
投稿日時: 2003-12-09 02:04
ちょっと状況がよくつかめないのですが。
JSPの生成するjavaのソースコードを見てみてはいかがでしょうか?
何か手がかりが見つかるかもしれません。

あと、if文はequalタグに置き換えられませんか?
できる限りstrutsのカスタムタグを使った方が良いと思います。
(色んな面でプラスになると思います)
でくのぼう
大ベテラン
会議室デビュー日: 2003/10/06
投稿数: 162
投稿日時: 2003-12-09 11:58
本筋とはズレますが option タグ内の value が
URI を示しているようですが、ここに値を出力する時は
<bean:write> よりも <html:rewrite> を使った方が良いですよ。

http://jakarta.apache.org/struts/userGuide/struts-html.html#rewrite
たま
ベテラン
会議室デビュー日: 2002/07/19
投稿数: 60
投稿日時: 2003-12-14 11:46
パルプ様、でくのぼう様、大変遅れましたがご返答有難うございます。
strutsでのご指摘有難うございます。strutsに関してはかなりの初心者の為
非常に勉強になりました!
でも、logic-equal等に変えても、まだ、起きているようです
なぜ、アプリケーションサーバのコンソール上では3回通っているのに
JSPでは2行分しか出ていないのかが。。。
iterateのタグを閉じる上でSystem.outを入れてあるので
<TR></TR>は3回通っているはず。strutsタグを使用した、何かトラブルがあった場合DBでいうロールバックされているような・・・ ってことはないですよね
るーさん
常連さん
会議室デビュー日: 2003/12/14
投稿数: 28
投稿日時: 2003-12-14 21:25
<tr>タグ内に<td>タグがありません。
あと、生成されたhtmlは確認してみました?
たま
ベテラン
会議室デビュー日: 2002/07/19
投稿数: 60
投稿日時: 2003-12-14 21:32
るーさん様、書き込みありがとうございます。
申し訳ございません。書き込みの際に載せましたコーディングは、
大雑把に書いておりまして、実際はTABLEタグの内部や
実際にJSPで出力されているHTMLはただ、TRが一列分入っておらず
ぜんぜん問題ありませんでした。
るーさん
常連さん
会議室デビュー日: 2003/12/14
投稿数: 28
投稿日時: 2003-12-14 21:42
コードは省略しないで、全部載せたほうがいいと思いますよ。
その部分が影響してる可能性もあるかもしれませんので。
1

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