- PR -

STRUTSと文字列処理

投稿者投稿内容
norinorimi
ベテラン
会議室デビュー日: 2005/07/28
投稿数: 51
投稿日時: 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クラスを用いると何故かうまくいきません。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-08-02 13:58
うまくいく場合、うまくいかない場合のhtmlを比べてみましょう。
norinorimi
ベテラン
会議室デビュー日: 2005/07/28
投稿数: 51
投稿日時: 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クラス部分だけです。
YOU@IT
ぬし
会議室デビュー日: 2002/03/29
投稿数: 284
お住まい・勤務地: 大阪
投稿日時: 2005-08-02 14:16
うーん...情報が断片的で結局どうなってるのかよくわかりません...

まず、やりたい事は、
 1.Vectorの中身をJSPを使って、HTMLテーブルに表示したい。
 2.Vectorの中身は、「2005/07/01 ABCABC, DEFDEF」のような形式なので、
   これを改行して表示したい
と言う事ですよね?

イメージとしては、
コード:
+--------------------+
|2005/07/01          |
|ABCABC              |
|DEFDEF              |
+--------------------+
|2005/07/02          |
|ABCABC              |
|DEFDEF              |
+--------------------+
|2005/07/03          |
|ABCABC              |
|DEFDEF              |
+--------------------+


のようになってほしい、で認識あってますか?


次に現状ですが、StrutsのTagLibを使って表示すると、うまく改行してくれない。

これもイメージにすると、
コード:
+--------------------------+
|2005/07/01 ABCABC, DEFDEF |
+--------------------------+
|2005/07/02 ABCABC, DEFDEF |
+--------------------------+
|2005/07/03 ABCABC, DEFDEF |
+--------------------------+


のようになってしまう、と言う事ですか?


で、これの対応としてStringToknizerあるいはStringのメソッドを使って、
空白とカンマをHTML改行タグ<br>に変換しようとしているがうまくいかない、
ですか?



あと、
引用:

レイアウト崩れが直らず、Renさまの方法でうまくいくかまだ確かめられません。
System.outでは合っていました


System.out.println()ではうまく改行できたんですね?
それはprintln()というメソッドが、1行ずつ表示するメソッドだから、ではないでしょうか?
HTMLとして表示する場合は、HTMLの改行タグ<br>が必要なのはご存知ですよね?

引用:

StringTokenizerクラスを用いると何故かうまくいきません。


どう使っているのかがわからないのですが、JSP中で使ってるんですよね?
該当箇所のソースコードを貼り付けて頂けますか?
(コードを貼るときは、[ code]...[ /code]で囲ってくださいね)
norinorimi
ベテラン
会議室デビュー日: 2005/07/28
投稿数: 51
投稿日時: 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]
となります。これ以上はすいません。


YOU@IT
ぬし
会議室デビュー日: 2002/03/29
投稿数: 284
お住まい・勤務地: 大阪
投稿日時: 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クラスで、空白・カンマを改行タグに置き換えるだけで済みそうですね。

であれば、
コード:
while(e.hasMoreElements()){ 
  AA A = (AA)e.nextElement(); 
  String log = A.log; 
  /* 空白を改行タグに置換 */
  log = log.replaceAll(" ", "<br>");
  /* カンマを改行タグに置換 */
  log = log.replaceAll(",", "<br>");
  userlog.add(log); 
}


のような感じでどうでしょうか?
StringTokenizerは使う必要がなさそうですが。。。


[余談]
個人的には、Actionクラスで改行タグを付けるのはやりません。
ロジックやデータがHTMLに依存することになってしまうからです。
このような表示に関する制御は、やはりJSP(と言うかビュー)で
行う方が良いと思います。
[/余談]

norinorimi
ベテラン
会議室デビュー日: 2005/07/28
投稿数: 51
投稿日時: 2005-08-02 16:05
YOU@IT様、何度もありがとうございます。
大変参考になりました。
改行タグを組み込むなんてやり方があるんですね〜勉強になりました。
実際にやってみたところ・・・大成功!!
本当に助かりました。三日かかりました(汗
今後ともよろしくお願いいたします。
YOU@IT
ぬし
会議室デビュー日: 2002/03/29
投稿数: 284
お住まい・勤務地: 大阪
投稿日時: 2005-08-02 16:10
ひとまず、解決して良かったですね。

ですが、先の余談にも書いたように、Actionクラス内でHTMLタグを埋め込むのは
あまり良い方法ではないと思いますので、余裕があればよりよい方法を
模索してもよいと思います。

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