Strutsを利用して以下のような2次元配列をHTMLで表を表現したいと考えています。
・オブジェクト(String型の2次元配列)
A,X,Y,999
A,X,Y,999
A,X,Z,999
A,X,Z,999
B,X,Y,999
B,X,Y,999
B,X,Z,999
B,X,Z,999
・出力したいHTML
|A|X|Y|999
| | | |999
| |X|Z|999
| | | |999
|B|X|Y|999
| | | |999
| |X|Z|999
| | | |999
(空白の部分はROWSPAN)
これを出力するためのソースが書けなくて困っています><
<logic:iterate>タグやスクリプトレットを駆使しているのですが…
ROWSPANのサイズを動的に取ったりしているのですが、
どうもうまくいきません。
よろしくお願いいたします。
コメント

- 2:Piro2
- 2007/10/13 13:45
mmkeさんありがとうございます。
おっしゃるとおり、rowspanの算出があることで、非常にやっかいなことになってます(^_^;)
提案1は思いつきませんでしたが、試してみたいと思います。
ユーザ側でそれでOKとなればいいのですが。。。
Tree構造のオブジェクトが取得できれば、確かにご指摘の方法もできそうです。(Strutsのタグではなくてスクリプトレットでゴリゴリって感じですね。)
提案1、2共に試してみたいと思います。

- 3:ゲスト (mmike)
- 2007/10/15 15:21
蛇足ですが、書き忘れがあったので、、、
2の方は下位にあるリストの数を取得できる関数を延々数珠繋ぎにしておくことで、rowspanは1回で求められますので参考まで。
strutsのなかでは、
<bean:write
で取得できます。
特に動かしてはいないですが、下記コードの考え方でいけるはずです。
public
}

- 4:ゲスト (mmike)
- 2007/10/15 15:23
ごめん。。。
コードしくりました。
public
}
が正しいです。
前へ 1 次へ![]()
コメントする
[block]から[/block]までの範囲はブロック表示されます。
部分的に目立たせたい時や、引用などにお使いください。
[code]から[/code]までの範囲は等幅表示されます。
ソースコードや設定ファイルの記述などにお使いください。






テーブルを作りたいというのでよければ、いくつか設計上で代替案になってしまいますが、、
Level {
List lowLevels;//下位階層のリスト
・提案1.rowspanをやめる(線を消すように考える)
・提案2.Stringの配列ではなくてbeanにする。
何故かというと、現在のデータ状態と実現ロジックを考えた場合、前の値をいちいち保持して、現在の値と比較し同じ項目が見つかった場合、rowspanの加算と出力前<html>をフルでどこかに保持しないと出力できないですよね?
であるならば、はじめからTree構造なりデータ構造(下記sample1参照)にしておけば、下位階層がいるときはそのループだけで後は入れ子にすれば成立します。
また、Stringの配列でどうしても行いたいのであれば、rowspanの計算中(加算中)は生成HTMLを丸ごとどこかに保持することでしか対応できないような気がします。
そこで、rowspanの計算をやめ毎回一行表示する代わり線を出さないようにすることでもほぼ同じ状態が得られます。
-------sample1#
//構造だけ示すつもりで書いてるので
//下記そのままのコードは望ましくありません。
class
}