嵌套EL功能
问题描述:
在我的JSP这样做时,我得到EL解析异常?嵌套EL功能
谢谢。
更新:
这是例外:
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)
答
Aaahh,它的WebSphere ......这已经是很久以前我用它在过去,我没有一个运行在这里,所以这里是一个在黑暗中拍摄:
尝试了重构嵌套函数为单独<c:set>
秒,然后在表达,而不是引用它们:
<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>
请注意,原代码在Tomcat 7.0.12中对我很好。所以如果有空间的话,可以考虑将Websphere升级到更新的版本。它可能已在更高版本中得到修复。
+0
终于找到了: 导入
看起来很好,只是在Tomcat 7.0.12上测试过,效果很好。你到底有什么异常?可能'$ {name}'根本不是'String'。 – BalusC 2011-05-12 21:44:26
我在上面的原始发布中添加了例外。 – user751383 2011-05-12 21:51:01