2009-12-28 7 views
27

मुझे जेएसटीएल चर का उपयोग करना है जिसे इटरेटर के अंदर गणना की जाती है।
कोड के अंश:मैं स्क्रिप्टलेट में जेएसटीएल वैरिएबल का उपयोग कैसे कर सकता हूं?

<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> 

मैं तीसरी पंक्ति को छोड़ना चाहता हूं जहां मैं पेज कॉन्टेक्स्ट में चर सेट कर रहा हूं। क्या इसे सेट किए बिना एक ही परिणाम प्राप्त करना संभव है? या क्या कोई और रास्ता है जिसका मैं उपयोग कर सकता हूं?

उत्तर

18

आप निम्न की कोशिश कर सकते हैं:

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

Btw - आप resultBean के लिए एक और विधि जोड़ सकते हैं - getMaskedCardNum(), और फिर बस पेज ${resultBean.maskedCardNum} जो अधिक पठनीय है में डाल दिया।

+0

वह scriptlets से छुटकारा पाने के है, जो एक अच्छी बात है चाहता हूँ। – BalusC

+0

स्वीकार किया गया: 'आप परिणाम के लिए एक और विधि जोड़ सकते हैं - getMaskedCardNum() ' –

+0

@ बालससी - मैं सहमत हूं, इसलिए मैंने दूसरा समाधान रखा है। –

7

मैं, एक कस्टम JSTL समारोह बनाने की सलाह देंगे (उदाहरण के लिए this जांच) ताकि आप स्क्रिप्टलेट को छोड़ सकते हैं। बदसूरत

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

आप कुछ करना होगा की तरह के बजाय:

<c:out value="${fnPrefix:maskString(currentCardNum)}" /> 
संबंधित मुद्दे