- - PR -
STRUTSと文字列処理
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-08-02 13:46
YOU@IT様、Ren様、ご返答ありがとうございました。
レイアウト崩れが直らず、Renさまの方法でうまくいくかまだ確かめられません。System.outでは合っていました。アドバイスありがとうございました。 レイアウト崩れのためか、まったく異なるところに表示され困っています。 YOU@IT様、説明不足ですいませんでした。状況としては、 Vectorクラスにデータを導入後、 request.setAttribute("name", userlog); でデータをJSPに送り、 <logic:iterate id="set" name="name" scope="request"> <bean:write name="set" /> でデータを表示しています。 表示に関しては、一番最初の書き込みの場合は うまく表示されたのですが、 StringTokenizerクラスを用いると何故かうまくいきません。 | ||||||||||||||||
|
投稿日時: 2005-08-02 13:58
うまくいく場合、うまくいかない場合のhtmlを比べてみましょう。
| ||||||||||||||||
|
投稿日時: 2005-08-02 14:05
インギさま、返答ありがとうございます。
<table cellpadding="4" cellspacing="1" border="0" > <th >contents</th> <logic:iterate id="set" name="name" scope="request"> <tr align="right"> <td><bean:write name="set" /></td> </tr> </table> JSPは全くいじらず行っています。actionクラス部分だけです。 | ||||||||||||||||
|
投稿日時: 2005-08-02 14:16
うーん...情報が断片的で結局どうなってるのかよくわかりません...
まず、やりたい事は、 1.Vectorの中身をJSPを使って、HTMLテーブルに表示したい。 2.Vectorの中身は、「2005/07/01 ABCABC, DEFDEF」のような形式なので、 これを改行して表示したい と言う事ですよね? イメージとしては、
のようになってほしい、で認識あってますか? 次に現状ですが、StrutsのTagLibを使って表示すると、うまく改行してくれない。 これもイメージにすると、
のようになってしまう、と言う事ですか? で、これの対応としてStringToknizerあるいはStringのメソッドを使って、 空白とカンマをHTML改行タグ<br>に変換しようとしているがうまくいかない、 ですか? あと、
System.out.println()ではうまく改行できたんですね? それはprintln()というメソッドが、1行ずつ表示するメソッドだから、ではないでしょうか? HTMLとして表示する場合は、HTMLの改行タグ<br>が必要なのはご存知ですよね?
どう使っているのかがわからないのですが、JSP中で使ってるんですよね? 該当箇所のソースコードを貼り付けて頂けますか? (コードを貼るときは、[ code]...[ /code]で囲ってくださいね) | ||||||||||||||||
|
投稿日時: 2005-08-02 14:35
YOU@IT様、何回もすいません。ありがとうございます。
<< で、これの対応としてStringToknizerあるいはStringのメソッドを使って、 空白とカンマをHTML改行タグ<br>に変換しようとしているがうまくいかない、 ですか? 合っています。そうなるようにSTRUTSのアクションクラスをどう書けばよいかで悩んでいたのですが、JSPにも問題があるかも?とういう感じです。 << HTMLとして表示する場合は、HTMLの改行タグ<br>が必要なのはご存知ですよね? 私の場合は、 [ code] <bean:write name="set" /> [ /code] で表示したいのですが、<br>は<bean:write name="set" />の後ろでしょうか?Syste.outに関してはおっしゃるとおりです。すいません。 << 該当箇所のソースコードを貼り付けて頂けますか? [ code] <table cellpadding="4" cellspacing="1" border="0" > <th bgcolor="#FFD2A6">contents</th> <logic:iterate id="set" name="name" scope="request"> <tr bgcolor="#eeeeee" align="right"> <td><bean:write name="set" /></td> </tr> </table> </logic:iterate> [ /code] となります。これ以上はすいません。 | ||||||||||||||||
|
投稿日時: 2005-08-02 15:24
なるほど、やっと見えてきました。
ID=nameでrequestスコープに格納されているVectorの中身を、 あらかじめ改行タグ<br>付きで作っておくと言う事ですか... name : Vector { 2005/07/01<br>ABCABCABCABCABCABCABCABC<br>DEFDEFDEFDEFDEF 2005/07/02<br>ABCABCABCABCABCABCABCABC<br>DEFDEFDEFDEFDEF 2005/07/03<br>ABCABCABCABCABCABCABCABC<br>DEFDEFDEFDEFDEF } のような感じにしておけばいいと。 ということでしたら、確かにJSPはいじる必要はなくて、 Actionクラスで、空白・カンマを改行タグに置き換えるだけで済みそうですね。 であれば、
のような感じでどうでしょうか? StringTokenizerは使う必要がなさそうですが。。。 [余談] 個人的には、Actionクラスで改行タグを付けるのはやりません。 ロジックやデータがHTMLに依存することになってしまうからです。 このような表示に関する制御は、やはりJSP(と言うかビュー)で 行う方が良いと思います。 [/余談] | ||||||||||||||||
|
投稿日時: 2005-08-02 16:05
YOU@IT様、何度もありがとうございます。
大変参考になりました。 改行タグを組み込むなんてやり方があるんですね〜勉強になりました。 実際にやってみたところ・・・大成功!! 本当に助かりました。三日かかりました(汗 今後ともよろしくお願いいたします。 | ||||||||||||||||
|
投稿日時: 2005-08-02 16:10
ひとまず、解決して良かったですね。
ですが、先の余談にも書いたように、Actionクラス内でHTMLタグを埋め込むのは あまり良い方法ではないと思いますので、余裕があればよりよい方法を 模索してもよいと思います。 |