Je dois accéder à la variable JSTL qui est calculée à l'intérieur de l'itérateur.
Extrait de code:
<c:forEach var="resultBean" items="${resultList}" varStatus="status">
card: ${resultBean.cardNum}
</c:forEach>
je voudrais accéder à ${resultBean.cardNum}
dans le code du scriptlet. ce que je fais en ce moment c'est:
<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>
Je veux sauter la troisième ligne où je mets la variable dans pageContext. Est-il possible d'obtenir le même résultat sans le définir? Ou existe-t-il un autre moyen que je peux utiliser?
Vous pouvez essayer ce qui suit:
<%
ResultBean resultBean = (ResultBean) pageContext.getAttribute("resultBean");
out.write( StringUtils.mask( resultBean.getCardNum() ) );
%>
BTW - vous pouvez ajouter une autre méthode à resultBean - getMaskedCardNum()
, puis mettez simplement la page ${resultBean.maskedCardNum}
Qui est plus lisible.
Je vous conseille de créer une fonction JSTL personnalisée (cochez this par exemple), afin que vous puissiez omettre le scriptlet. Donc, au lieu du laid
<%out.write( StringUtils.mask( (String)pageContext.getAttribute("currentCardNum") ) );%>
vous aurez quelque chose comme:
<c:out value="${fnPrefix:maskString(currentCardNum)}" />