如何在脚本中使用JSTL变量?

2022-09-01 16:07:54

我必须访问在迭代器内部计算的JSTL变量。
代码摘录:

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

我想访问脚本代码。我现在做的是:${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>

我想跳过我在pageContext中设置变量的第三行。是否可以在不设置的情况下获得相同的结果?还是有其他方法可以使用?


答案 1

您可以尝试以下操作:

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

顺便说一句 - 你可以添加另一个方法到 resultBean - ,然后直接放入更具可读性的页面。getMaskedCardNum()${resultBean.maskedCardNum}


答案 2

我建议创建一个自定义的JSTL函数(例如,检查这一点),以便您可以省略脚本。所以而不是丑陋

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

你会有这样的东西:

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