DBから取得したカラムの改行コードを活かして表示する方法【JavaEE・xhtml対応】

2025年5月9日

こんばんは。とてぃです。

本日は、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でどう描くかまでの紹介でしたが、今後も便利な方法があれば随時追記します。
最後まで読んでいただきありがとうございました。

技術html,java

Posted by xxoruioxx