Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSTL将变量设置为字符串的长度_Java_Xml_Jstl - Fatal编程技术网

Java JSTL将变量设置为字符串的长度

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

我有一些代码,我正试图使用它们来获取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>

问题是您不能在
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”,但不能打印,这让我觉得这两个词的搭配不太好。