java - JSPG0122E : Unable to parse EL function in Websphere 8

标签 java jstl el websphere-6.1 websphere-8

我正在将 Web 应用程序从 Websphere 6.1 迁移到 Websphere 8,并且在我的一个 JSP 页面中遇到以下错误:

com.ibm.ws.jsp.translator.JspTranslationException: JSPG0227E: Exception caught while translating /jsp/myJsp.jsp: /jsp/myJsp.jsp(863,4) --> JSPG0122E: Unable to parse EL function ${not empty rowVo.operation.package}. 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:1757) at com.ibm.ws.jsp.translator.visitor.validator.ValidateVisitor.validateCustomTagAttributeValues(ValidateVisitor.java:1405) 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:234) at com.ibm.ws.jsp.translator.visitor.JspVisitor.visit(JspVisitor.java:216) at com.ibm.ws.jsp.translator.JspTranslator.processVisitors(JspTranslator.java:127) at com.ibm.ws.jsp.translator.utils.JspTranslatorUtil.translateJsp(JspTranslatorUtil.java:254) at com.ibm.ws.jsp.translator.utils.JspTranslatorUtil.translateJspAndCompile(JspTranslatorUtil.java:121)

JSP 文件中有问题的部分如下所示:

<c:forEach var="rowVo"
  items="${searchResultContainer.searchResultRowsPage}"
  varStatus="opStatus">
    <c:if test="${not empty rowVo.operation.jobscopeDescription}">
        <td>${rowVo.operation.jobscopeDescription}</td>
    </c:if>
    <c:if test="${not empty rowVo.operation.package}">
        <td>${rowVo.operation.package}</td>
    </c:if>
</c:forEach>

真正让我困惑的是,异常是从第三个 EL 表达式中抛出的,而第二个表达式几乎相同。

Operation 是生成的类:

public class Operation {

    //Other properties omitted

    @XmlElement(name = "package")
    protected List<Package> _package;
    protected List<String> jobscopeDescription;
    public List<Package> getPackage() {
        if (_package == null) {
            _package = new ArrayList<Package>();
        }
        return this._package;
    }    
    public List<String> getJobscopeDescription() {
        if (jobscopeDescription == null) {
            jobscopeDescription = new ArrayList<String>();
        }
        return this.jobscopeDescription;
    }
}

这些文件在迁移过程中没有改变,并且在 WAS 6.1 上运行良好。有谁知道这里出了什么问题吗?

最佳答案

负责检查将保留关键字用作 EL 变量标识符的代码在 WebSphere Application Server v8.0 及更高版本中得到了增强,使检查更加严格。变量检查代码不仅检查 EL 保留关键字,还检查 Java 保留关键字。

有关详细信息,请参阅本文:http://www-01.ibm.com/support/docview.wss?uid=swg21642419&myns=swgws&mynp=OCSSEQTP&mync=A

关于java - JSPG0122E : Unable to parse EL function in Websphere 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17744158/

相关文章:

java - 在树中搜索特定值

Java - 构造函数明显缺失,运算符重载

java - 使用 JSTL 调用对象方法

jsp - 双嵌套EL变量?

java - Guava 缓存 : Put operation triggers removal listener

java - 最佳实践 - 从 SQL 检索名称

java - 动态内容中嵌入的自定义标签(嵌套标签)不呈现

javax.el.PropertyNotFoundException : Property 'AuthFirstName' not found on type entity.

jsf - component.clientId 和 p :component() 生成的客户端 id 之间的差异

css - 防止eclipse破坏CSS格式