我的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>
答案 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 />");
}
}
}
}