如何在scriptlet中使用JSTL变量?

时间:2009-12-28 12:36:36

标签: java jsp jstl scriptlet

我必须访问在迭代器中计算的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中设置变量。没有设置它可以实现相同的结果吗?或者我可以使用其他方式吗?

2 个答案:

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