JSF: ContextAwarePropertyNotFoundException/javax.el.PropertyNotFoundException

У меня есть страница JSF home.xhtml с некоторыми компонентами / представлением JSF, и допустим, что она в настоящее время загружена во всплывающем окне браузера (Firefox) с именем test-popoup-win. Теперь я пытаюсь получить доступ к той же странице/URL-адресу home.xhtml?query=JSF с дополнительными параметрами URL-адреса из другого окна браузера (Firefox), которое должно загружать другой/новый набор компонентов. , на основе нового контекста поиска (?query=JSF). И это загружает home.xhtml в том же всплывающем окне браузера с именем test-popup-win, переопределяя предыдущие компоненты/представление JSF. В коде серверного сервлета я фактически перенаправляю на ту же страницу, home.xhtml?query=JSF.

Но вместо отображения нового представления выдает следующую ошибку. Журнал показывает, что свойство не найдено. Я могу подтвердить, что свойство не найдено, принадлежит старому представлению/компоненту. Но если я нажму «Продолжить» на своей пользовательской странице ошибок, я получу новое представление без каких-либо проблем.

Пожалуйста, помогите / посоветуйте, предложив способ, который мог бы очистить предыдущее представление и загрузить новое представление или любой другой способ устранения проблемы. Дайте мне знать, если мне не хватает каких-либо входных данных. Спасибо большое.

Есть ли хороший способ отладки такого рода проблем с 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* 

person user2717907    schedule 26.08.2013    source источник
comment
не читая весь q', где-то в вашем коде вы пытаетесь получить доступ к свойству testJsonData внутри ContainerBean , но оно не существует или нет геттера/сеттера... проверьте это   -  person Daniel    schedule 26.08.2013
comment
вы размещаете свой компонент в качестве аргумента с ui:param ?   -  person Daniel    schedule 26.08.2013
comment
просто убедитесь, что вы не вызываете несуществующие геттеры/сеттеры для своих bean-компонентов, или убедитесь, что все bean-компоненты имеют одни и те же свойства (наследование) или оберните свои компоненты (которые пытаются получить доступ к вашим геттерам) с помощью rendered="#{myBean.typeOfBean eq 'theOneWithThatProperty'}" или что-то в этом роде   -  person Daniel    schedule 26.08.2013
comment
Обратите внимание, что я переместил некоторые из своих комментариев в исходный пост.   -  person user2717907    schedule 26.08.2013


Ответы (1)


Убедитесь, что вы не вызываете несуществующие геттеры/сеттеры для ваших bean-компонентов, или убедитесь, что все bean-компоненты имеют одни и те же базовые свойства (наследование), или оберните свои компоненты (которые пытаются получить доступ к вашим геттерам) с помощью rendered="#{myBean.typeOfBean eq 'theOneWithThatProperty'}" или что-то в этом роде...

person Daniel    schedule 26.08.2013
comment
Пожалуйста, посоветуйте, если есть какое-либо общее решение для Убедитесь, что вы не вызываете несуществующие геттеры/сеттеры для ваших bean-компонентов. Я боюсь, что два других решения могут не подойти для моего случая, когда у меня много много bean-компонентов. Спасибо. - person user2717907; 27.08.2013
comment
В моем ответе содержатся идеи, которые я могу предложить вам использовать, может быть, есть какой-то другой способ, о котором я не подумал... Если вы опубликуете свой фрагмент кода, я или другие смогут помочь вам больше - person Daniel; 27.08.2013