アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんばんは。質問です!
strutsとjavaとTomcatを使用して開発をしております。

SQLから取得したデータを
jspでテーブルの<TD>に<bean:write>を使ってただ表示
をしているだけなのですが、
データがnullの場合、テーブル枠が消えてしまい、
レイアウトが崩れてしまいます・・・

strutsでnullデータに" "(半角空白)を入れて渡すと、
変わらず、"&bnsp;"を入れて渡すと&bnsp;が
そのまま出力されてしまいます・・・

そこで、" "(全角空白)を入れて渡したところ、
うまくいきました。

ですが、他に良い方法はないでしょうか?
また、質問タイトルには、「strutsでは~」と書いていますが、
実際のところ、jspで制御した方がいいのでしょうか?

ご存知の方がいましたら、ご回答お願い致します。

A 回答 (3件)

半角スペースでレイアウトが崩れるのはHTMLの性質です。


単純な<TABLE>タグでも再現すると思います。
<TABLE>
<TR><TD>hoge</TD></TR>
<TR><TD> </TD></TR>
</TABLE>

'&bnsp;'がそのまま表示されるのはStrutsのタグライブラリが'&'をエスケープ処理したため
「正常に」5文字の文字列を表示している結果です。
# 本当に'&'を表示したいときに困るでしょう?

主な回避策としては
・表示時にBeanの中を評価する(JSPで処理をおこなう)
・自前のエスケープ処理を記述したJavaクラスを呼び出す
・Strutsタグライブラリを拡張する
が挙げられます。
若干難易度があがるかもしれませんが、タグライブラリの拡張が汎用性に富んでいます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!

とても詳しくて参考になりました!
タグライブラリを拡張してみます。

ありがとうございました☆

お礼日時:2007/07/18 09:40

こんにちは、



このような感じでも回避できると思います。
<TD><bean:write ・・・・ /><br/></TD>
brタグを入れてやることで回避できると思います。

>変わらず、"&bnsp;"を入れて渡すと&bnsp;が
>そのまま出力されてしまいます・・・
これですが、filter属性があったような気がします。
filter=falseでセットされているものをそのまま表示されます。
<bean:write filter=false ・・・ />
でも、全てエスケープされなくなると思いますので、ご注意を・・・
    • good
    • 0
この回答へのお礼

こんにちは。
ご回答ありがとうございました!

あれから、filter属性で対処しました。
<br>の方法も先程試しましたが、やはり
そのまま&nbsp;が出力されました。

ありがとうございました☆

お礼日時:2007/07/18 17:48

とりあえず &bnsp; ではなく ね



正直、HTMLまで「」が行っていてその「」がそのまま
文字列としてブラウザに出てしまうのは考えにくいです。


ただ、どうしてもダメならstruts固有の問題と思って素直にJSPに処理させたほうが良いかも。
    • good
    • 0
この回答へのお礼

こんばんは。ご回答ありがとうございます!

誤字でした・・・すみません!
そうですか。Strutsですか・・・

今のところ、全角空白" "をセットすると、
何してるんだろう?って感じで、嫌なんですよね・・・

JSPで処理してみます!
ありがとうございました☆

お礼日時:2007/07/17 23:18

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