• ベストアンサー

strutsで空白を認識させるには?

こんばんは。質問です! strutsとjavaとTomcatを使用して開発をしております。 SQLから取得したデータを jspでテーブルの<TD>に<bean:write>を使ってただ表示 をしているだけなのですが、 データがnullの場合、テーブル枠が消えてしまい、 レイアウトが崩れてしまいます・・・ strutsでnullデータに" "(半角空白)を入れて渡すと、 変わらず、"&bnsp;"を入れて渡すと&bnsp;が そのまま出力されてしまいます・・・ そこで、" "(全角空白)を入れて渡したところ、 うまくいきました。 ですが、他に良い方法はないでしょうか? また、質問タイトルには、「strutsでは~」と書いていますが、 実際のところ、jspで制御した方がいいのでしょうか? ご存知の方がいましたら、ご回答お願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • momozange
  • ベストアンサー率67% (21/31)
回答No.2

半角スペースでレイアウトが崩れるのはHTMLの性質です。 単純な<TABLE>タグでも再現すると思います。 <TABLE> <TR><TD>hoge</TD></TR> <TR><TD> </TD></TR> </TABLE> '&bnsp;'がそのまま表示されるのはStrutsのタグライブラリが'&'をエスケープ処理したため 「正常に」5文字の文字列を表示している結果です。 # 本当に'&'を表示したいときに困るでしょう? 主な回避策としては ・表示時にBeanの中を評価する(JSPで処理をおこなう) ・自前のエスケープ処理を記述したJavaクラスを呼び出す ・Strutsタグライブラリを拡張する が挙げられます。 若干難易度があがるかもしれませんが、タグライブラリの拡張が汎用性に富んでいます。

system0001
質問者

お礼

ご回答ありがとうございます! とても詳しくて参考になりました! タグライブラリを拡張してみます。 ありがとうございました☆

その他の回答 (2)

回答No.3

こんにちは、 このような感じでも回避できると思います。 <TD><bean:write ・・・・ /><br/></TD> brタグを入れてやることで回避できると思います。 >変わらず、"&bnsp;"を入れて渡すと&bnsp;が >そのまま出力されてしまいます・・・ これですが、filter属性があったような気がします。 filter=falseでセットされているものをそのまま表示されます。 <bean:write filter=false ・・・ /> でも、全てエスケープされなくなると思いますので、ご注意を・・・

system0001
質問者

お礼

こんにちは。 ご回答ありがとうございました! あれから、filter属性で対処しました。 <br>の方法も先程試しましたが、やはり そのまま&nbsp;が出力されました。 ありがとうございました☆

  • mahny
  • ベストアンサー率74% (57/77)
回答No.1

とりあえず &bnsp; ではなく &nbsp; ね 正直、HTMLまで「&nbsp;」が行っていてその「&nbsp;」がそのまま 文字列としてブラウザに出てしまうのは考えにくいです。 ただ、どうしてもダメならstruts固有の問題と思って素直にJSPに処理させたほうが良いかも。

system0001
質問者

お礼

こんばんは。ご回答ありがとうございます! 誤字でした・・・すみません! そうですか。Strutsですか・・・ 今のところ、全角空白" "をセットすると、 何してるんだろう?って感じで、嫌なんですよね・・・ JSPで処理してみます! ありがとうございました☆

関連するQ&A