Java JSTL将变量设置为字符串的长度
我有一些代码,我正试图使用它们来获取jstl中xml节点值的长度Java JSTL将变量设置为字符串的长度,java,xml,jstl,Java,Xml,Jstl,我有一些代码,我正试图使用它们来获取jstl中xml节点值的长度 <x:forEach select="$person/tel" var="phone"> <x:if select="$phone/@type='office'"> <c:set var="length" value=${fn:length("${phone}")}/> &l
<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>
问题是您不能在
fn:length()中使用“${phone}”
正确的方法应该是:
<c:set var="length" value=${fn:length(phone)}/>
解决了这个问题。问题在于:
<x:set var="number" select="$tel/phone"/>
不设置字符串,但只是xml节点的表示形式。要将节点内容转换为字符串,我执行了以下操作:
<c:set var="phonenumber">
<x:out select="$number"/>
</c:set>
x:out将节点内容转换为字符串,并将其包装在c:set中设置变量。为什么使用标记javascript?我想你指的是Java,是的。我修好了。谢谢。您没有引用value
属性的值。将xml变量传递给length函数是有效的吗?我已经用我的新代码更新了我的问题。现在,打印出来的输出长度仅为1。我知道该节点存在,并且所有的“if”语句都有效。
检查它是否是一个字符串,并且设置是否正确(不是空的)。我可以在屏幕上打印“number”,但不能打印,这让我觉得这两个词的搭配不太好。