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

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

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

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

<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. Действительно ли возможно достигнуть того же результата, не устанавливая его? Или есть ли наоборот, который я могу использовать?

27
задан Rakesh Juyal 28 December 2009 в 12:36
поделиться

2 ответа

Можно попробовать следующее:

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

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

.
19
ответ дан 28 November 2019 в 05:46
поделиться

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

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

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

<c:out value="${fnPrefix:maskString(currentCardNum)}" />
7
ответ дан 28 November 2019 в 05:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: