2012-05-21 2 views
1

Было интересно узнать, можно ли удалить последний элемент из массива с помощью JSTL? В настоящее время я использую c: url для добавления параметров (от массива) к гиперссылке. Я хочу, чтобы иметь возможность удалить последний параметр, а также ...JSTL: удалить последний элемент из массива

Вот код с: URL для добавления параметров

<c:url value="search" var="url"> 
    <c:param name="q" value="${q}"/> 
    <c:forEach var="field" items="${fq}"> 
     <c:param name="fq" value="${field}"/> 
    </c:forEach> 
</c:url> 

ответ

4

Нет, это не возможно. Вы не можете манипулировать массивами в JSTL. Вы можете на самом высоком уровне установить последний элемент на null, но это не изменит длину массива.

В ваш частный случай есть однако другой способ: вы можете проверить, если вы в настоящее время итерация последнего элемента массива, проверив LoopTagStatus#isLast(), а затем просто пропустить этот пункт вообще в <c:param>

<c:url value="search" var="url"> 
    <c:param name="q" value="${q}"/> 
    <c:forEach var="field" items="${fq}" varStatus="loop"> 
     <c:if test="${not loop.last}"> 
      <c:param name="fq" value="${field}"/> 
     </c:if> 
    </c:forEach> 
</c:url> 

Обратите внимание, что Я удалил fn:length(), потому что это не нужно. <c:forEach> уже не будет итерации, если нет элементов.

+0

Спасибо, я дам ему вихрь. – milesmiles55

+1

Работает отлично, спасибо! – milesmiles55

+0

* изменение * fn: длина() удален – milesmiles55