JSTL устанавливает переменную в длину строки

1

У меня есть код, который я пытаюсь использовать для получения длины значения узла xml в jstl.

<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
    Почему вы использовали тег javascript? Я думаю, что вы имели в виду Java.
  • 0
    Я сделал. Я починил это. Благодарю.
Показать ещё 1 комментарий
Теги:
jstl

2 ответа

0

Выяснил это. Проблема в том, что:

<x:set var="number" select="$tel/phone"/>

не устанавливает строку, а просто представляет собой узел xml. Чтобы преобразовать содержимое узла в строку, я сделал:

<c:set var="phonenumber">
    <x:out select="$number"/>
</c:set>

x: out преобразует содержимое узла в строку и обертывает его в c: set задает переменную.

0

Проблема в том, что вы не можете использовать "${phone}" внутри fn:length().

Правильный способ:

 <c:set var="length" value=${fn:length(phone)}/>
  • 0
    Является ли передача этой переменной xml функции length допустимой вещью? Я обновил свой вопрос новым кодом. Теперь выводится только длина 1. Я знаю, что узел существует, и все операторы «если» верны.
  • 0
    <x:set var="number" select="$tel/phone"/> проверить, является ли она строкой и задана ли она правильно (не пусто).
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню