我必须访问在迭代器中计算的JSTL变量 代码摘录:
<c:forEach var="resultBean" items="${resultList}" varStatus="status">
card: ${resultBean.cardNum}
</c:forEach>
我想在scriptlet代码中访问${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中设置变量。没有设置它可以实现相同的结果吗?或者我可以使用其他方式吗?
答案 0 :(得分:19)
您可以尝试以下操作:
<%
ResultBean resultBean = (ResultBean) pageContext.getAttribute("resultBean");
out.write( StringUtils.mask( resultBean.getCardNum() ) );
%>
BTW - 您可以向resultBean添加另一个方法 - getMaskedCardNum()
,然后只需添加更易读的页面${resultBean.maskedCardNum}
。
答案 1 :(得分:7)
我建议创建一个自定义JSTL函数(例如,检查this),这样就可以省略scriptlet。 而不是丑陋的
<%out.write( StringUtils.mask( (String)pageContext.getAttribute("currentCardNum") ) );%>
你会有类似的东西:
<c:out value="${fnPrefix:maskString(currentCardNum)}" />