web-dev-qa-db-fra.com

Comment puis-je utiliser la variable JSTL dans le scriptlet?

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?

27
Rakesh Juyal

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.

19
David Rabinowitz

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)}" />
7
Bozho