2013-08-26 9 views
0

는 좀 JSF 구성 요소/볼 수있는 JSF 페이지 home.xhtml을 가지고의 그것이 현재 test-popoup-win라는 (파이어 폭스) 브라우저의 팝업 창에로드 가정 해 봅시다. 이제 동일한 페이지/URL에 액세스하려고 시도합니다. home.xhtml? query = JSF, 새로운 url 매개 변수와 함께 새로운 검색을 기반으로 다른/새로운 구성 요소 세트를로드해야하는 다른 브라우저 (Firefox) 브라우저 창에서 액세스하려고합니다. context (? query = JSF). 그리고 이것은 같은 브라우저 팝업창에 home.xhtml을로드합니다. 이름은 test-popup-win이며 이전 JSF 구성 요소 /보기를 덮어 씁니다. 백엔드 서블릿 코드에서 실제로는 을 같은 페이지 home.xhtml? query = JSF로 리디렉션하고 있습니다.JSF : ContextAwarePropertyNotFoundException/javax.el.PropertyNotFoundException

그러나 새보기를 표시하는 대신 다음 오류가 발생합니다. 로그에 속성을 찾을 수 없음이 표시됩니다. 찾을 수없는 속성이 이전 뷰/빈에 속해 있는지 확인할 수 있습니다. 그러나 사용자 정의 오류 페이지에서 계속을 클릭하면 아무런 문제없이 새보기가 표시됩니다.

이전보기를 깨끗하게 지우고 새로운보기 또는 다른 방법으로 문제를 해결할 수있는 방법을 제안하여 도움/조언을 부탁드립니다. 입력 사항이 누락 된 경우 알려주십시오. 고맙습니다.

이런 종류의 JSF 문제를 디버깅하는 좋은 방법이 있습니까?

업데이트 : 한-하지 않을 수 있습니다 - 좋은 임시 해결 방법 (I 솔루션 호출도 모릅니다) FacesErrorHandlingServlet 클래스에서 예외를 무시할 수 있습니다. 난 여전히 좋은 솔루션을 찾고, 당신은 당신의 콩 unexisting 게터/세터를 호출하거나하지 않는 확인 한

*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

전체 q '를 읽지 않고 코드 어딘가에'testJsonData' 속성에 액세스하려고합니다. 'ContainerBean',하지만 존재하지 않거나 getter/setter가 없습니다 ... 체크 아웃하십시오 – Daniel

+0

당신은'ui : param'? – Daniel

+0

bean에서 unexisting getter/setter를 호출하지 말거나, 모든 bean이 동일한 속성 (상속)을 공유하는지 또는 (rendered에 get하려고 시도하는) 컴포넌트를'rendered = "# {myBean}으로 감싸는 지 확인하십시오. typeOfBean eq 'theOneWithThatProperty'} ""또는 그와 비슷한 것 – Daniel

답변

0

이 있다면 알려주세요/노력하고 있는지 모든 콩을 공유 동일한 기본 속성 (상속) 또는 rendered="#{myBean.typeOfBean eq 'theOneWithThatProperty'}" 또는 그와 비슷한 것으로 rendered="#{myBean.typeOfBean eq 'theOneWithThatProperty'}" 또는 그 ...와 같은 구성 요소를 래핑하십시오.

+0

일반적인 솔루션이 있다면 Pls에게 조언합니다. 빈에서 getter/setter를 호출하지 않도록하십시오. 다른 많은 솔루션이 제 경우에 적합하지 않을 수도 있습니다. 많은 콩이 많이 있습니다. 고맙습니다. – user2717907

+0

내 대답은 내가 사용하도록 제안 할 수있는 아이디어를 가지고 있습니다. 어쩌면 내가 생각하지 않은 다른 방법이있을 수 있습니다. 코드 스 니펫을 게시하면 나에게 도움이 될 것입니다. – Daniel