Webサイトなどで、DBから取得したデータをそのまま表示することを考えます。
このとき、DBでは改行コードが\n
や\r
で保存されていることもあるかと思いますが、これをそのままhtmlで出力させても改行は行われません。
htmlでは改行は<br>
で表されるからですね。
ビューにThyemeleafを使っている場合は、この改行コードから改行タグへの変換が簡単にできるので、その方法を説明します。
build.gradle
build.gradle
を使っている場合は、dependencies
に依存ライブラリを記述していると思いますが、ここにthymeleaf-extras-nl2br
を追記してください。
dependencies { implementation 'com.github.bufferings:thymeleaf-extras-nl2br:1.0.0' }
pom.xml
などを使っている場合も同様です。
Nl2brDialectを@Bean登録する
Nl2brDialect
クラスのインスタンスを@Bean登録します。
import com.github.bufferings.thymeleaf.extras.nl2br.dialect.Nl2brDialect; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; @Component public class SampleConfig { @Bean public Nl2brDialect dialect() { return new Nl2brDialect(); } }
ビューの修正
まず、htmlファイルの冒頭に以下を記述します。
<html xmlns:th="http://www.thymeleaf.org" xmlns:nl2br="https://github.com/bufferings/thymeleaf-extras-nl2br">
つぎに、上で定義したnl2br
を使うよう修正します。
たとえばコントローラー層からtext
という変数を受け取っていて、それを表示したい場合は、以下のように記述します。
<p nl2br:text="${text}"></p>
このように書くことで、text
に\n
や\r
などの改行コードが含まれていたとしても、<br>
に変換されて表示されます。