java jsp jstl scriptlet

java - ¿Cómo puedo usar la variable JSTL en scriptlet?



jsp (2)

Aconsejo crear una función JSTL personalizada (compruebe this por ejemplo), para que pueda omitir el scriptlet. Entonces, en lugar de lo feo

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

Tendrás algo así como:

<c:out value="${fnPrefix:maskString(currentCardNum)}" />

Tengo que acceder a la variable JSTL que se calcula dentro del iterador.
Extracto de código:

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

me gustaría acceder a ${resultBean.cardNum} en el código scriptlet. lo que estoy haciendo ahora es:

<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>

Quiero omitir la 3ª línea donde estoy configurando la variable en pageContext. ¿Es posible lograr el mismo resultado sin configurarlo? ¿O hay otro camino que puedo usar?


Puedes probar lo siguiente:

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

Por cierto, puedes agregar otro método a resultBean - getMaskedCardNum() , y luego simplemente poner en la página ${resultBean.maskedCardNum} que es más legible.