0

我有一个带有一些 JSF 组件/视图的 JSF 页面home.xhtml,假设它当前加载在名为test-popoup-win. 现在我尝试从另一个(Firefox)浏览器窗口访问相同的页面/url home.xhtml?query=JSF和附加的url参数,该窗口应该加载不同的/新的组件集,基于新的搜索上下文( ?查询=JSF)。这会在同一个浏览器弹出窗口中加载 home.xhtml,名为test-popup-win,覆盖以前的 JSF 组件/视图。在后端 servlet 代码中,我实际上是重定向到同一个页面 home.xhtml?query=JSF。

但它没有显示新视图,而是引发以下错误。日志显示未找到属性。我可以确认该属性未找到,属于旧视图/bean。但是,如果我在自定义错误页面上单击继续,我会毫无问题地获得新视图。

请提供帮助/建议,通过建议一种可以干净地清除先前视图并加载新视图或任何其他问题修复方式的方法。如果我缺少任何输入,请告诉我。非常感谢。

有什么好的方法来调试这种 JSF 问题吗?

更新:一种可能不太好的临时解决方法(我什至不称之为解决方案)可能是忽略FacesErrorHandlingServlet类中的异常。我仍在尝试/寻找一个好的解决方案,如果你有一个,请分享

*15:58:55,495 ERROR [stderr] (http-/0.0.0.0:8080-10) **javax.servlet.ServletException: javax.el.PropertyNotFoundException: The class 'com.test.ContainerBean' does not have the property 'testJsonData'.**
15:58:55,496 ERROR [stderr] (http-/0.0.0.0:8080-10)     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:229)
15:58:55,496 ERROR [stderr] (http-/0.0.0.0:8080-10)     at org.apache.myfaces.webapp.MyFacesServlet.service(MyFacesServlet.java:112)
15:58:55,497 ERROR [stderr] (http-/0.0.0.0:8080-10)     at **com.test.FacesErrorHandlingServlet**.service(FacesErrorHandlingServlet.java:44)
15:58:55,497 ERROR [stderr] (http-/0.0.0.0:8080-10)     at sun.reflect.GeneratedMethodAccessor293.invoke(Unknown Source)
.
.
.
15:58:55,536 ERROR [stderr] (http-/0.0.0.0:8080-10) **Caused by: javax.el.PropertyNotFoundException: The class 'com.test.ContainerBean' does not have the property 'testJsonData'.**
15:58:55,537 ERROR [stderr] (http-/0.0.0.0:8080-10)     at javax.el.BeanELResolver.getBeanProperty(BeanELResolver.java:661)
15:58:55,537 ERROR [stderr] (http-/0.0.0.0:8080-10)     at javax.el.BeanELResolver.getValue(BeanELResolver.java:290)
15:58:55,537 ERROR [stderr] (http-/0.0.0.0:8080-10)     at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:175)
15:58:55,538 ERROR [stderr] (http-/0.0.0.0:8080-10)     at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:179)
15:58:55,538 ERROR [stderr] (http-/0.0.0.0:8080-10)     at org.apache.el.parser.AstValue.getValue(AstValue.java:166)
15:58:55,539 ERROR [stderr] (http-/0.0.0.0:8080-10)     at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
15:58:55,539 ERROR [stderr] (http-/0.0.0.0:8080-10)     at org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression.getValue(ContextAwareTagValueExpression.java:96)
15:58:55,540 ERROR [stderr] (http-/0.0.0.0:8080-10)     ... 82 more* 
4

1 回答 1

0

确保你没有在你的 bean 上调用不存在的 getter/setter,或者确保所有 bean 共享相同的基本属性(继承)或用rendered="#{myBean.typeOfBean eq 'theOneWithThatProperty'}"类似的东西包装你的组件(试图访问你的 getter)......

于 2013-08-26T14:13:44.500 回答