Hatena::ブログ(Diary)

今日の役に立たない一言 − Today’s Trifle! −

2014-03-02

[]JSTLで改行でのsplit()ができない問題 JSTLで改行でのsplit()ができない問題を含むブックマーク 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>
トラックバック - http://d.hatena.ne.jp/satoshis/20140302/p2


10000番ポートがブロックされている環境ではこちらのカウンターは表示されません2004/02/29に値が壊れたすごいカウンター
←はてなカウンター