我有一些代码,我试图用它来获取jstl中xml节点值的长度。
<x:forEach select="$person/tel" var="phone">
<x:if select="$phone/@type='office'">
<c:set var="length" value=${fn:length("${phone}")}/>
<c:out value="${length}"/>
</x:if>
</x:forEach>
我在调用函数时遇到错误。
“org.apache.jasper.JasperException:/edit.jsp(第87行,第35列)引号符号”
我需要获取长度,因为长度决定了我如何解析它并将其写入页面。
我不确定是否有办法做到这一点,或者我是否正确接近这一点。
更新的代码:
<x:forEach select="$person/tel" var="tel">
<x:if select="$tel/@type='office'">
<x:set var="number" select="$tel/phone"/>
<c:set var="length" value="${fn:length(number)}"/>
<c:out value="${length}"/>
</x:if>
</x:forEach>
答案 0 :(得分:0)
问题是您无法在"${phone}"
内使用fn:length()
。
正确的方法应该是:
<c:set var="length" value=${fn:length(phone)}/>
答案 1 :(得分:0)
想出来了。问题是:
<x:set var="number" select="$tel/phone"/>
不设置字符串,而只是xml节点的表示。要将节点内容转换为字符串,我做了:
<c:set var="phonenumber">
<x:out select="$number"/>
</c:set>
x:out将节点内容转换为字符串,并将其包装在c:set中设置变量。