在迁移Web应用程序期间从WAS 6.1到WAS 7时出现异常。此应用程序使用JSF1.1(MyFaces)+ Facelets + Spring(用于支持bean)开发。在某些页面上,我遇到以下异常:
Caused by: javax.faces.FacesException: Could not retrieve value of component with path : {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /pages/recovery_accs.xhtml][Class: javax.faces.component.html.HtmlForm,Id: sequestration][Class: javax.faces.component.html.HtmlDataTable,Id: _id37][Class: javax.faces.component.UIColumn,Id: _id50][Class: javax.faces.component.html.HtmlOutputText,Id: _id52]}
at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getValue(RendererUtils.java:271)
at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getStringValue(RendererUtils.java:226)
at org.apache.myfaces.shared_impl.renderkit.html.HtmlTextRendererBase.renderOutput(HtmlTextRendererBase.java:69)
at org.apache.myfaces.shared_impl.renderkit.html.HtmlTextRendererBase.encodeEnd(HtmlTextRendererBase.java:57)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:799)
... 46 more
Caused by: javax.faces.el.PropertyNotFoundException: /pages/sub/idocAccsRecoverySub.xhtml @34,55 value="#{varbean.idocAcc.vzOrder}": Bean: com.test.project.bean.idoc.accs.IdocAccBean, property: idocAcc
at com.sun.facelets.el.LegacyValueBinding.getValue(LegacyValueBinding.java:58)
at javax.faces.component.UIOutput.getValue(UIOutput.java:118)
at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getValue(RendererUtils.java:267)
... 50 more
Caused by: java.beans.IntrospectionException: Parameter type in setter method does not corresponds to predefined.
at java.beans.PropertyDescriptor.setWriteMethod(Unknown Source)
at java.beans.PropertyDescriptor.<init>(Unknown Source)
at java.beans.StandardBeanInfo.introspectProperties(Unknown Source)
at java.beans.StandardBeanInfo.<init>(Unknown Source)
at java.beans.Introspector.getBeanInfoImpl(Unknown Source)
at java.beans.Introspector.getBeanInfoImpl(Unknown Source)
at java.beans.Introspector.getBeanInfoImplAndInit(Unknown Source)
at java.beans.Introspector.getBeanInfo(Unknown Source)
at org.apache.myfaces.el.PropertyResolverImpl.getPropertyDescriptor(PropertyResolverImpl.java:474)
at org.apache.myfaces.el.PropertyResolverImpl.getProperty(PropertyResolverImpl.java:438)
at org.apache.myfaces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:85)
at com.sun.facelets.el.LegacyELContext$LegacyELResolver.getValue(LegacyELContext.java:141)
at org.apache.el.parser.AstValue.getValue(AstValue.java:123)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
at com.sun.facelets.el.LegacyValueBinding.getValue(LegacyValueBinding.java:56)
... 52 more
尝试使用不同版本的facelet库和不同的EL实现。甚至尝试使用IBM的JDK重新编译项目。仍然没有成功。在Apache Tomcat上它没有问题。
在上面的堆栈跟踪中 - IdocAccBean 是一个常规java bean,它扩展了一个抽象类 IdocAccCore 。如果我使用扩展该类的其他支持bean,我会得到相同的异常。不是从 IdocAccCore 派生的所有其他bean都能正常工作。 IdocAccCore 类中没有什么特别之处,它非常大,所以我认为没有必要提供完整的源代码。
有什么建议 IdocAccCore 类有什么问题吗?
答案 0 :(得分:2)
通过更新IBM版本的JRE解决了这个问题。实际上,我在想我正在使用最新版本的IBM JRE。我确实从IBM的网站IBM Development Package for Eclipse下载了一个。问题是这个包包含相当旧版本的IBM java 1.6。我在Websphere AS的fixpacks中找到的IBM java的新版本。 您可以在IBM的java 1.6 here
中找到已修复错误的详细列表