Не удается получить значение "index" из цикла for в цикл if в JSP
Вопрос
Мое утверждение if всегда принимает значение false и не вводит <span>
блок.Из-за этого я не могу получить значение "index" в условии if, я перепробовал все, добавляя index с помощью # и %.Кто-нибудь может предложить решение?
<c:forEach var="index" begin="1" end="<%=a%>" step="1">
<s:if test="index == 1">
<span class="currentpage"><b>${page_id}</b></span>
</s:if>
<s:else>
<a href="searchAction.html?page_id=${index}&searchString=${searchString}" class="paginglinks">${index}</a>
</s:else>
</c:forEach>
Решение
понял, на самом деле это какой-то конфликт в тегах
это должно быть похоже на
<c:forEach var="index" begin="1" end="<%=a%>" step="1" varStatus="status">
<c:choose>
<c:when test="${page_id==index}">
<span class="currentpage"><b>${page_id}</b></span>
</c:when>
<c:otherwise>
<a href="searchAction.html?page_id=${index}&searchString=${searchString}" class="paginglinks">${index}</a>
</c:otherwise>
</c:choose>
</c:forEach>
Другие советы
Конфликт заключается в том, что в первом посте вы смешиваете
- Теги JSTL (c:forEach)
- Расставляет метки (s:if)
Предложенное вами решение работает, потому что теперь у вас есть
- Теги JSTL (c:forEach)
- Снова теги JSTL (c:when)
Другим хорошим решением было бы
- Теги Struts (итератор s:)
- Снова расставляет теги (s:if)
Вообще говоря, ожидается, что использование тегов из нескольких технологий будет проблематичным.
использовать
test="${index == 1}"
или попробуйте использовать атрибут varStatus, чтобы ...
<c:forEach var="index" varStatus="status" begin="1" end="<%=a%>" step="1">
<s:if test="${status.count == 1}">
<span class="currentpage"><b>${page_id}</b></span>
</s:if>
<s:else>
<a href="searchAction.html?page_id=${index}&searchString=${searchString}" class="paginglinks">${index}</a>
</s:else>
</c:forEach>
Тестовое значение не оценивается, это просто строка на странице. Р>
Отредактируйте, у вас есть синтаксис strut. Р>
Добавить "% {} " вот так:
<s:if test="%{index == 1}">