餃子を食べるとき、何をつけますか?

はじめまして。

PostgreSQLから読み込んだ文字列データを表示させるtomcat+struts+servlet/jspを作成中です。
データの文字列に含まれる改行が、クライアントに表示された際に反映されず困っています。

過去ログも調べ、近い質問はありましたが、僕とは内容が微妙に違うようで、改めて質問させていただきました。


例えば、あるテーブルのある項目に、
A
B
C
というデータ(A,Bそれぞれの後に改行のある3行の文字列)があるとします。

これを読み込みaction form bean(と言うのですか?setter/getterを定義する関数です)を介してjspに埋め込むと、できあがるhtmlでは、
ABC
と改行されずに表示されます。

htmlで改行させるには「<BR>」が必要なのかと、データ文字列に0x0dや0x0a、または0x0d+0x0aがあれば「<BR>」に置き換えてaction form bean(?)のsetterに渡してjspを作ると、今度は、
A<BR>B<BR>C
と「<BR>」が文字列として表示されます。
htmlをソース表示すると、「A&lt;BR&gt;B&lt;BR&gt;C」で、親切にも「<」「>」をそれぞれ「&lt;」「&gt;」に勝手に置き換えあくまで文字列として表示してくれるようです。

試しに改行コードを「&lt;BR&gt;」に置き換えても予想通りその部分は
&lt;BR&gt;
とそのまま表示され、そのソースは「&amp;lt;BR&amp;gt;」でした。

「<」や「&lt;」等をそれぞれ「&lt;」「&amp;lt;」のように置き換える作業は、どこが行っているのでしょうか。
また、改行位置で改行させるにはどうすればよろしいでしょう。
OSはwindowsXPです。

無知ゆえに、つまらないことで悪戦苦闘しているのかも知れませんが、経験も浅くてよく解りません。

宜しくお願い致します。

A 回答 (1件)

私も経験が浅いので、分からない部分が多いのですが、



"<"や">"を置き換えるという機能は、
Javaというより、strutsが提供している機能らしいです。

"<"や">"を置き換える機能を持たせないと、
ユーザーが何かフォーマットに入力するときに、
JavaScriptを書き込んで、
例えば、alertを出し続けるようないたずらができてしまうので、
そういうことを防ぐために、変換機能を持っているのだと思います。
(具体的にどのタイミングで変換しているかは分からないのですが・・・)

単純に、画面上で改行された表示にしたいということであれば、
HTMLの<pre>タグを使うといいと思います。

-----------------------------
<pre>
A
B
C
</pre>
-----------------------------
という感じで、改行されて表示されると思います。
この方法でやるなら、改行コードを"<BR>"に置き換える処理はしないことになります。

少しでも手がかりになればと思い、書き込ませていただきました。
    • good
    • 1
この回答へのお礼

なるほど"<"や">"を置き換えるのは、必要があってのことなのですね。

このデータを表示するjspすべてを修正しないといけないのと、<pre>~</pre>間がモノスペースとなり他の表示とバランスが崩れてしまうのは悩ましいところですが、
でも、とりあえず<pre></pre>でいこうと思います。

本当にありがとうございました。

お礼日時:2005/03/20 15:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A