我有一个带有一些JSF组件/视图的JSF页面 home.xhtml ,让我们说它当前已加载到名为test-popoup-win
的(Firefox)浏览器弹出窗口中。现在我尝试从另一个(Firefox)浏览器窗口访问相同的页面/ URL, home.xhtml?query = JSF ,以及其他url参数,该窗口应该加载不同的/新的组件集,基于新的搜索上下文(?query = 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*
答案 0 :(得分:0)
确保不要在bean上调用未使用的getter / setter,或者确保所有bean共享相同的基本属性(继承)或使用rendered="#{myBean.typeOfBean eq 'theOneWithThatProperty'}"
包装组件(尝试访问getter)或类似的东西...