2011-05-12 8 views
6

मैं जब मेरे JSP में यह कर ईएल पार्स अपवाद मिल रहा है?नेस्टिंग ईएल कार्यों

धन्यवाद।

अद्यतन:

view.jsp(86,94) --> JSPG0122E: Unable to parse EL function ${fn:substring(name, fn:length(MYPREFIX), fn:length(name)}). 

at com.ibm.ws.jsp.translator.visitor.validator.ELValidator.validateElFunction(ELValidator.java:500) 
at com.ibm.ws.jsp.translator.visitor.validator.ELValidator.validateELExpression(ELValidator.java:122) 
at com.ibm.ws.jsp.translator.visitor.validator.ELValidator.validateELExpression(ELValidator.java:149) 
at com.ibm.ws.jsp.translator.visitor.validator.ValidateVisitor.validateCustomTagAttribute(ValidateVisitor.java:1752) 
at com.ibm.ws.jsp.translator.visitor.validator.ValidateVisitor.validateCustomTagAttributeValues(ValidateVisitor.java:1400) 
at com.ibm.ws.jsp.translator.visitor.validator.ValidateVisitor.visitCustomTagStart(ValidateVisitor.java:294) 
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:366) 
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processChildren(JspVisitor.java:419) 
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:369) 
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processChildren(JspVisitor.java:419) 
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:369) 
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processChildren(JspVisitor.java:419) 
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:369) 
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processChildren(JspVisitor.java:419) 
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:234) 
at com.ibm.ws.jsp.translator.visitor.JspVisitor.visit(JspVisitor.java:216) 
at com.ibm.ws.jsp.translator.JspTranslator.processVisitors(JspTranslator.java:127) 
+0

ठीक लग रहा है, बस टॉमकैट 7.0.12 पर परीक्षण किया गया और ठीक काम करता है। आप वास्तव में क्या अपवाद प्राप्त कर रहे हैं? शायद '$ {name}' बिल्कुल 'स्ट्रिंग' नहीं है। – BalusC

+0

मैंने ऊपर मूल पोस्टिंग के अपवाद को जोड़ा। – user751383

उत्तर

2

Aaahh, यह Websphere है ... यह एक लंबे समय पहले मैं पिछले के लिए इसका इस्तेमाल किया और मैं एक चल रहा है की जरूरत नहीं है कर दिया गया है:

यह अपवाद नहीं है यहाँ है, तो यहां अंधेरे में एक गोली मार है: नेस्टेड कार्यों अलग <c:set> रों में बाहर refactor करने के लिए और फिर उन्हें बजाय अभिव्यक्ति में संदर्भ

प्रयास करें:

<c:set var="begin" value="${fn:length(MYPREFIX)}" /> 
<c:forEach var="name" items="${data.names}" varStatus="status"> 
    <c:set var="end" valur="${fn:length(name)}" /> 
    <c:set var="reducedName" value="${fn:substring(name, begin, end)}"/> 
    ... 
</c:forEach> 

ध्यान दें कि मूल कोड टॉमकैट 7.0.12 में मेरे लिए ठीक काम करता है। तो यदि कमरा है, तो वेबस्पेयर को एक नए संस्करण में अपग्रेड करने पर विचार करें। यह बाद में रिलीज में तय किया गया हो सकता है।

+0

अंत में यह पाया: आयात <% = InternalConstants.MYPREFIX%> , हल नहीं किया जा सकता है, ताकि MYPREFIX एक स्ट्रिंग ईएल को विफल कर रही नहीं था। अजीब है कि मुझे पहले गलत आयात के लिए अपवाद नहीं मिला (एचएम, शायद मैंने इसे देख लिया है) ... – user751383