DBから取得したカラムの改行コードを活かして表示する方法【JavaEE・xhtml対応】
こんばんは。とてぃです。
本日は、xhtml側でDBから取得したカラム値に改行コード(\r\nや\n)が含まれている場合、その改行を画面表示で活かす方法について解説します。
前提:DBの文字列カラムに改行コードが含まれており、これをそのままHTML上で表示したいケースを想定しています。
よくある課題:改行コードがそのまま表示されない
例えば、JavaEEのxhtmlでTableタグ配下のtdタグに#{オブジェクト.フィールド名}
でデータを出力しても、改行や空白が反映されず、1行で表示されてしまいます。
DBのカラム名: | xxxxxxx |
取得したデータ: | こんばんは\r\n今日は晴れですね\r\n |
このようなデータをそのまま出力しても、改行はHTML上で無視されてしまいます。
解決策1:<pre>タグを使う
<pre>タグを使うと、空白や改行をそのまま表示できます。
<td>
<pre>#{オブジェクト.フィールド名}</pre>
</td>
出力例:
こんばんは
今日は晴れですね。
この方法なら、DBの値に含まれる改行や空白をそのまま画面に反映できます。
解決策2:改行コードを<br />タグに変換する
もし<pre>
タグが使いにくい場合や、デザイン上インライン表示したい場合は、サーバーサイドで改行コード(\r\nや\n)を<br />
に変換して出力する方法もあります。
// Javaの例
public String convertNewLineToBr(String text) {
if (text == null) return "";
return text.replaceAll("(\r\n|\n|\r)", "<br />");
}
JSF(xhtml)では、escape="false"
を指定してHTMLタグを有効化する必要があります。
<h:outputText value="#{bean.convertNewLineToBr(オブジェクト.フィールド名)}" escape="false" />
この方法なら、改行を維持しつつ、デザインも柔軟に調整できます。
注意点・ベストプラクティス
- HTMLタグを出力する場合は
escape="false"
を忘れずに(XSS対策も考慮) - DBに保存する際は、改行コードの統一(\r\n or \n)を意識すると変換が楽
- 大量データやパフォーマンスが気になる場合は、サーバーサイドで一括変換推奨
- デザインや見やすさに応じて
<pre>
と<br />
使い分け
まとめ
- DBの改行コードを画面で活かすには、
<pre>
タグや<br />
変換が有効 - JSF(xhtml)では
escape="false"
の指定を忘れずに - 用途やデザインに応じて最適な方法を選びましょう
本日はHTMLでどう描くかまでの紹介でしたが、今後も便利な方法があれば随時追記します。
最後まで読んでいただきありがとうございました。
ディスカッション
コメント一覧
まだ、コメントがありません