JSTLで改行でのsplit()ができない問題
JSPの中でオブジェクト内の文字列を取得して、改行コードでsplit()してやろうと思ったら、JSPがコンパイルエラーになって動かない。
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:forEach var="s" items="${fn:split(hoge.text, '\n')}"> <div>${s}</div> </c:forEach>
ぐぐってみたら信じられないような解決方法だったり。
≫JSTLのfn:replaceで改行を置換したい - こせきの技術日記 - 技術日記
たしかにこう書けば期待通りに動くんだけど。。。
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:forEach var="s" items="${fn:split(hoge.text, ' ')}"> <div>${s}</div> </c:forEach>
あまりに気に入らないから、エンティティにメソッド追加した。
public class Hoge { // あーだこーだ // 普通のgetter public String getText() { return text; } // 追加したメソッド public String[] getSplitedText() { return text.split("\n"); } }
JSPでは追加したメソッドからString配列を取得する。
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:forEach var="s" items="${hoge.splitedText}"> <div>${s}</div> </c:forEach>