(环境:JSF 2与Facelets的时,JBoss 6,EJB 3,)
如何使用JSF 2 EL引用战争外的财产?
我有一个EAR项目内的WAR。是否可以引用Ear中其他JAR文件中类的属性?我的意思是,#{managedBean.anotherClass.yetAnother.property}
有效,其中managedBean位于View.war的WEB-INF/classes类中,类AnotherClass
和YetAnother
位于Another.jar中?
BigProject.ear
|
+ Another.jar
+ View.war
如果它是有效的,那么你能给我提示什么可以引发PropertyNotFoundException?是否需要配置?
尝试保存关闭的问题: 我的情景与@BalusC评论中提到的情景之间存在差异。在那里,他/她正在引用托管bean,而在我的情况下托管bean仍然在同一场战争中,我正在寻找一个正常的POJO属性,它位于另一个jar中。
[编辑]
好的,所以这里是完整的例外。类PojoOne不具有属性,但它确实有一个方法 “getPojoCustomer()”
2011-10-28 16:50:33,996 SEVERE [javax.enterprise.resource.webcontainer.jsf.application] (http-0.0.0.0-8080-1) Error Rendering View[/startup.xhtml]: javax.faces.FacesException: javax.el.PropertyNotFoundException: /startup.xhtml @24,177 itemLabel="#{pojoOne.getPojoCustomer().getOrganisationId()}": The class 'org.example.PojoOne' does not have the property 'getPojoCustomer'.
at javax.faces.component.UIComponentBase$AttributesMap.get(UIComponentBase.java:2228)
at org.primefaces.renderkit.InputRenderer.getSelectItems(InputRenderer.java:69)
at org.primefaces.component.selectonelistbox.SelectOneListboxRenderer.encodeSelectItems(SelectOneListboxRenderer.java:124)
at org.primefaces.component.selectonelistbox.SelectOneListboxRenderer.encodeInput(SelectOneListboxRenderer.java:107)
at org.primefaces.component.selectonelistbox.SelectOneListboxRenderer.encodeMarkup(SelectOneListboxRenderer.java:69)
at org.primefaces.component.selectonelistbox.SelectOneListboxRenderer.encodeEnd(SelectOneListboxRenderer.java:50)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:879)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1650)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:164)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:60)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:48)
at org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:51)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:879)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1650)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1646)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1646)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1646)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:389)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:127)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:117)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:135)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:309)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181)
at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.event(CatalinaContext.java:285)
at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invoke(CatalinaContext.java:261)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:159)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951)
at java.lang.Thread.run(Thread.java:662)
Caused by: javax.el.PropertyNotFoundException: /startup.xhtml @24,177 itemLabel="#{pojoOne.getPojoCustomer().getOrganisationId()}": The class 'org.example.PojoOne' does not have the property 'getPojoCustomer'.
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:108)
at javax.faces.component.UIComponentBase$AttributesMap.get(UIComponentBase.java:2226)
... 42 more
可能重复[?如何引用JSF的JAR文件管理豆(http://stackoverflow.com/questions/7663818/how -to-reference-jsf-managed-beans-in-a-jar-file) – BalusC
非常感谢BalusC,但是我的托管bean与上面的问题不一样。但它指的是另一个罐子里的一个班级。这意味着,在AnotherClass或YetAnother类中没有特定的JSF代码或注释。 – anergy
哦。然后我对你的具体问题感到困惑。请发布异常消息和跟踪。现在开始看起来你只是没有实例化任何嵌套的属性(JSF/EL不会为你做这件事),你如何打包这些类并不重要。 – BalusC