2009-12-28 1 views
27

iterator 내부에서 계산 된 JSTL 변수에 액세스해야합니다. 코드의
발췌 :스크립틀릿에서 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 행을 건너 뛰고 싶다. 그것을 설정하지 않고 동일한 결과를 얻을 수 있습니까? 아니면 다른 방법으로 사용할 수 있습니까?

답변

18

는 다음을 시도 할 수 있습니다 : BTW

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

- 당신은 resultBean에 다른 방법을 추가 할 수 있습니다 - getMaskedCardNum()하고 단지 더 읽을 페이지 ${resultBean.maskedCardNum}에 넣어.

+0

그는 좋은 일이다, 스크립틀릿을 제거하려면 : 그래서 그 대신 같은 당신이 뭔가를해야합니다 추악한

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

의 . – BalusC

+0

수락 :'resultBean에 또 다른 메소드를 추가 할 수 있습니다 - getMaskedCardNum()' –

+0

@BalusC - 그 이유는 두 번째 해결책을 제시했기 때문입니다. –

7

스크립틀릿을 생략 할 수 있도록 사용자 지정 JSTL 함수 (예 : this 확인)를 만드는 것이 좋습니다.

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