- ベストアンサー
strutsで空白を認識させるには?
こんばんは。質問です! strutsとjavaとTomcatを使用して開発をしております。 SQLから取得したデータを jspでテーブルの<TD>に<bean:write>を使ってただ表示 をしているだけなのですが、 データがnullの場合、テーブル枠が消えてしまい、 レイアウトが崩れてしまいます・・・ strutsでnullデータに" "(半角空白)を入れて渡すと、 変わらず、"&bnsp;"を入れて渡すと&bnsp;が そのまま出力されてしまいます・・・ そこで、" "(全角空白)を入れて渡したところ、 うまくいきました。 ですが、他に良い方法はないでしょうか? また、質問タイトルには、「strutsでは~」と書いていますが、 実際のところ、jspで制御した方がいいのでしょうか? ご存知の方がいましたら、ご回答お願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
半角スペースでレイアウトが崩れるのはHTMLの性質です。 単純な<TABLE>タグでも再現すると思います。 <TABLE> <TR><TD>hoge</TD></TR> <TR><TD> </TD></TR> </TABLE> '&bnsp;'がそのまま表示されるのはStrutsのタグライブラリが'&'をエスケープ処理したため 「正常に」5文字の文字列を表示している結果です。 # 本当に'&'を表示したいときに困るでしょう? 主な回避策としては ・表示時にBeanの中を評価する(JSPで処理をおこなう) ・自前のエスケープ処理を記述したJavaクラスを呼び出す ・Strutsタグライブラリを拡張する が挙げられます。 若干難易度があがるかもしれませんが、タグライブラリの拡張が汎用性に富んでいます。
その他の回答 (2)
- naochancom
- ベストアンサー率61% (41/67)
こんにちは、 このような感じでも回避できると思います。 <TD><bean:write ・・・・ /><br/></TD> brタグを入れてやることで回避できると思います。 >変わらず、"&bnsp;"を入れて渡すと&bnsp;が >そのまま出力されてしまいます・・・ これですが、filter属性があったような気がします。 filter=falseでセットされているものをそのまま表示されます。 <bean:write filter=false ・・・ /> でも、全てエスケープされなくなると思いますので、ご注意を・・・
お礼
こんにちは。 ご回答ありがとうございました! あれから、filter属性で対処しました。 <br>の方法も先程試しましたが、やはり そのまま が出力されました。 ありがとうございました☆
- mahny
- ベストアンサー率74% (57/77)
とりあえず &bnsp; ではなく ね 正直、HTMLまで「 」が行っていてその「 」がそのまま 文字列としてブラウザに出てしまうのは考えにくいです。 ただ、どうしてもダメならstruts固有の問題と思って素直にJSPに処理させたほうが良いかも。
お礼
こんばんは。ご回答ありがとうございます! 誤字でした・・・すみません! そうですか。Strutsですか・・・ 今のところ、全角空白" "をセットすると、 何してるんだろう?って感じで、嫌なんですよね・・・ JSPで処理してみます! ありがとうございました☆
お礼
ご回答ありがとうございます! とても詳しくて参考になりました! タグライブラリを拡張してみます。 ありがとうございました☆