基本上是jsp:fn:split
用来构造一个数组作为传递给bean的参数。
这些字符串是从以下 XML 的警告/警告元素中解析的:
<?xml version="1.0" encoding="UTF-8"?>
<task><caution>fs43sd</caution>
<title>aaaa<warning>fsdfas</warning></title>
<warning>asddas</warning><sbsb><warning>fsdasds</warning></sbsb>
<aaaaa>
<bbb><caution>fsdfsd243sd</caution>
<warning>fsdfsd</warning>
</bbb>
</aaaaa>
</task>
并且使用以下 JSP 构造字符串数组并将其参数化为 bean:
<c:set var="wids">
<x:forEach select="$output/descendant::warning" var="warning">
<x:out select="$warning" />,</x:forEach></c:set>
<c:set var="cids">
<x:forEach select="$output/descendant::caution" var="caution">
<x:out select="$caution" />,</x:forEach></c:set>
<jsp:useBean id="wc" class="main.beans.WCBean">
<jsp:setProperty name="wc" property="wids" value="${fn:split(wids, ',')}"/>
<jsp:setProperty name="wc" property="cids" value="${fn:split(cids, ',')}"/>
</jsp:useBean>
当我使用以下命令打印构造的数组时<c:forEach items="${fn:split(wids, ',')}" var="entry">${entry},</c:forEach>
:
fsdfas,
asddas,
fsdasds,
fsdfsd,
请注意,换行符附加到每个值的末尾。任何想法?
试图删除选择之前的换行符并且它消失了。猜猜 c:set 将里面的任何非 jsp 标记视为字符串文字。