ScriptletでJSTL変数を使用するにはどうすればよいですか?
質問
Iterator内で計算される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関数を作成することをお勧めします(チェックします これ たとえば、スクリプトレットを省略できるように。だから醜いのではなく
<%out.write( StringUtils.mask( (String)pageContext.getAttribute("currentCardNum") ) );%>
あなたは次のようなものを持っています:
<c:out value="${fnPrefix:maskString(currentCardNum)}" />
所属していません StackOverflow