【发布时间】:2013-07-19 10:41:43
【问题描述】:
我正在将 Web 应用程序从 Websphere 6.1 移动到 Websphere 8,并且在我的 JSP 页面之一中遇到以下错误:
com.ibm.ws.jsp.translator.JspTranslationException: JSPG0227E: 翻译 /jsp/myJsp.jsp: /jsp/myJsp.jsp(863,4) 时捕获异常 --> JSPG0122E: 无法解析 EL 函数 $ {不是空的 rowVo.operation.package}。在 com.ibm.ws.jsp.translator.visitor.validator.ELValidator.validateElFunction(ELValidator.java:500) 在 com.ibm.ws.jsp.translator.visitor.validator.ELValidator.validateELExpression(ELValidator.java:122)在 com.ibm.ws.jsp.translator.visitor.validator.ELValidator.validateELExpression(ELValidator.java:149) 在 com.ibm.ws.jsp.translator.visitor.validator.ValidateVisitor.validateCustomTagAttribute(ValidateVisitor.java:1757)在 com.ibm.ws.jsp.translator.visitor.validator.ValidateVisitor.validateCustomTagAttributeValues(ValidateVisitor.java:1405) 在 com.ibm.ws.jsp.translator.visitor.validator.ValidateVisitor.visitCustomTagStart(ValidateVisitor.java:294)在 com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:366) 在 com.ibm.ws.jsp.translator.visitor.JspVisitor.processChildren(JspVisitor.java:419) 在 com.ibm .ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:369) at com.ibm.ws.jsp.translator.visitor.JspVisitor.processChildren(JspVisit or.java:419) 在 com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:369) 在 com.ibm.ws.jsp.translator.visitor.JspVisitor.processChildren(JspVisitor.java: 419) 在 com.ibm.ws.jsp.translator.visitor.JspVisitor.visit(JspVisitor.java:216) 在 com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:234) 在 com .ibm.ws.jsp.translator.JspTranslator.processVisitors(JspTranslator.java:127) 在 com.ibm.ws.jsp.translator.utils.JspTranslatorUtil.translateJsp(JspTranslatorUtil.java:254) 在 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 上运行良好。有人知道这里出了什么问题吗?
【问题讨论】:
标签: java jstl el websphere-6.1 websphere-8