Я должен получить доступ к переменной 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. Действительно ли возможно достигнуть того же результата, не устанавливая его? Или есть ли наоборот, который я могу использовать?
Можно попробовать следующее:
<%
ResultBean resultBean = (ResultBean) pageContext.getAttribute("resultBean");
out.write( StringUtils.mask( resultBean.getCardNum() ) );
%>
BTW - можно добавить еще один метод в resultBean - getMaskedCardNum()
, а затем просто поместить на странице ${resultBean.maskedCardNum}
, которая более читабельная.
Я бы посоветовал создать пользовательскую функцию JSTL (например, проверьте this), чтобы можно было пропустить скриптлет. Так что вместо уродливого
<%out.write( StringUtils.mask( (String)pageContext.getAttribute("currentCardNum") ) );%>
у вас будет что-то вроде:
<c:out value="${fnPrefix:maskString(currentCardNum)}" />