イテレータ内で計算される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で変数を設定している3行目をスキップします。設定しなくても同じ結果が得られますか?または、私が使用できる他の方法がありますか?
以下を試すことができます。
_<%
ResultBean resultBean = (ResultBean) pageContext.getAttribute("resultBean");
out.write( StringUtils.mask( resultBean.getCardNum() ) );
%>
_
ところで、resultBeanに別のメソッドを追加することもできます-getMaskedCardNum()
、そしてより読みやすい_${resultBean.maskedCardNum}
_ページに置くだけです。
スクリプトレットを省略できるように、カスタムJSTL関数(たとえば this を確認)を作成することをお勧めします。だから醜いの代わりに
<%out.write( StringUtils.mask( (String)pageContext.getAttribute("currentCardNum") ) );%>
あなたは次のようなものになります:
<c:out value="${fnPrefix:maskString(currentCardNum)}" />