使用fn.join将<br/>添加到String

时间:2014-03-14 03:01:09

标签: jsp jstl

我的JSP中有以下JSTL代码。我使用换行符(\ n)作为分隔符将String拆分为数组。然后我尝试向每个成员添加<br />,然后在页面上显示它,但没有显示任何元素。我只是得到了空白。任何人都可以帮助我吗?

<c:set var="comment" value="${bulletin.note}" />
<c:set var="comment" value="${fn:split(comment, '\\\\n')}" />
<c:forEach var="line" items="${comment}">
    <c:set var="line" value="${fn.join(line, '<br />')}" />
    <c:out value="${line}" /><br>
</c:forEach>

3 个答案:

答案 0 :(得分:0)

示例代码,例如您的类型:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>
<head>
<title>JSTL fn:split() example</title>
</head>
<body>
<c:set var="msg" value="This is an example of JSTL function"/>
<c:set var="arrayofmsg" value="${fn:split(msg,' ')}"/>
<c:forEach var="i" begin="0" end="6">
 arrayofmsg[${i}]: ${arrayofmsg[i]}<br>
</c:forEach>
</body>
</html>

答案 1 :(得分:0)

变量comment包含数据数组。您只需使用c:foreach迭代此数组:

<c:set var="comment" value="${bulletin.note}" />
<c:set var="comment" value="${fn:split(comment, '\\\\n')}" />
<c:forEach var="line" items="${comment}">
    <c:out value="${line}" /><br>
</c:forEach>

如果您想使用JSTL join,则语法为fn:join(而不是fn.join)。

答案 2 :(得分:0)

我通过编写以下自定义标记解决了这个问题:

public class NotePrint extends SimpleTagSupport {
    private String note;

    public void setNote(String note) {
        this.note = note;
    }

    public String getNote() {
        return note;
    }

    public void doTag() throws JspException, IOException {
        PageContext pageContext = (PageContext) getJspContext();
        JspWriter out = pageContext.getOut();
        note.replace("\n\n", "\n ");
        String[] noteArray = note.split("\n");

        for (int i = 0; i < noteArray.length; i++) {
            if (i == noteArray.length - 1) {
                out.println(noteArray[i]);

            } else {
                out.println(noteArray[i] + "<br />");
            }
        }
    }
}