Подтвердить что ты не робот

Как я могу использовать переменную JSTL в скриптлете?

Мне нужно получить доступ к переменной JSTL, которая вычисляется внутри итератора.
Выдержка из кода:

<c:forEach var="resultBean" items="${resultList}" varStatus="status">
   card: ${resultBean.cardNum} 
</c:forEach>

Мне бы хотелось получить доступ к ${resultBean.cardNum} в коде скрипта. что я делаю прямо сейчас:

<c:forEach var="resultBean" items="${resultList}" varStatus="status">
   card: ${resultBean.cardNum} 
   <c:set var="currentCardNum">${resultBean.cardNum}</c:set>
   <%out.write( StringUtils.mask( (String)pageContext.getAttribute("currentCardNum") ) );%>
</c:forEach>

Я хочу пропустить 3-ей строку, где я устанавливаю переменную в pageContext. Можно ли добиться такого же результата без его установки? Или есть другой способ, который я могу использовать?

4b9b3361

Ответ 1

Вы можете попробовать следующее:

<%
  ResultBean resultBean = (ResultBean) pageContext.getAttribute("resultBean");
  out.write( StringUtils.mask( resultBean.getCardNum() ) );
%>

BTW - вы можете добавить другой метод resultBean - getMaskedCardNum(), а затем просто поместить на страницу ${resultBean.maskedCardNum}, которая более читаема.

Ответ 2

Я бы посоветовал создать пользовательскую функцию JSTL (например, this), чтобы вы могли опустить скриптлет. Поэтому вместо уродливого

<%out.write( StringUtils.mask( (String)pageContext.getAttribute("currentCardNum") ) );%>

у вас будет что-то вроде:

<c:out value="${fnPrefix:maskString(currentCardNum)}" />