简体   繁体   English

<t:panelNavigation2>导致javax.faces.FacesException:不能两次添加相同的组件

[英]<t:panelNavigation2> causes javax.faces.FacesException: Cannot add the same component twice

I am using Tomahawk20 1.1.14 for JSF 2.0 on WildFly 8.2.0. 我在WildFly 8.2.0上将Tomahawk20 1.1.14用于JSF 2.0。 When using <t:panelNagivation2> , the below exception is thrown: 使用<t:panelNagivation2> ,抛出以下异常:

javax.faces.FacesException: Cannot add the same component twice

How is this caused and how can I solve it? 这是怎么引起的,我该如何解决? Here is the stack trace: 这是堆栈跟踪:

Caused by: javax.faces.FacesException: Cannot add the same component twice: nav:panel-nav:nav_panel-nav_uinavmitem1
    at com.sun.faces.context.StateContext$DynamicAddRemoveListener.handleAddRemoveWithAutoPrune(StateContext.java:751) [jsf-impl-2.2.8-jbossorg-1.jar:]
    at com.sun.faces.context.StateContext$DynamicAddRemoveListener.handleAdd(StateContext.java:678) [jsf-impl-2.2.8-jbossorg-1.jar:]
    at com.sun.faces.context.StateContext$AddRemoveListener.processEvent(StateContext.java:352) [jsf-impl-2.2.8-jbossorg-1.jar:]
    at com.sun.faces.context.StateContext$DynamicAddRemoveListener.processEvent(StateContext.java:568) [jsf-impl-2.2.8-jbossorg-1.jar:]
    at javax.faces.event.SystemEvent.processListener(SystemEvent.java:108) [jboss-jsf-api_2.2_spec-2.2.8.jar:2.2.8]
    at javax.faces.event.ComponentSystemEvent.processListener(ComponentSystemEvent.java:118) [jboss-jsf-api_2.2_spec-2.2.8.jar:2.2.8]
    at com.sun.faces.application.ApplicationImpl.processListenersAccountingForAdds(ApplicationImpl.java:2239) [jsf-impl-2.2.8-jbossorg-1.jar:]
    at com.sun.faces.application.ApplicationImpl.invokeViewListenersFor(ApplicationImpl.java:2057) [jsf-impl-2.2.8-jbossorg-1.jar:]
    at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:292) [jsf-impl-2.2.8-jbossorg-1.jar:]
    at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:247) [jsf-impl-2.2.8-jbossorg-1.jar:]
    at org.jboss.as.jsf.injection.weld.ForwardingApplication.publishEvent(ForwardingApplication.java:299) [wildfly-jsf-injection-8.2.0.Final.jar:8.2.0.Final]
    at javax.faces.component.UIComponentBase.publishAfterViewEvents(UIComponentBase.java:2253) [jboss-jsf-api_2.2_spec-2.2.8.jar:2.2.8]
    at javax.faces.component.UIComponentBase.doPostAddProcessing(UIComponentBase.java:1934) [jboss-jsf-api_2.2_spec-2.2.8.jar:2.2.8]
    at javax.faces.component.UIComponentBase.setParent(UIComponentBase.java:447) [jboss-jsf-api_2.2_spec-2.2.8.jar:2.2.8]
    at org.apache.myfaces.custom.navmenu.htmlnavmenu.HtmlNavigationMenuRenderer.addUINavigationMenuItems(HtmlNavigationMenuRenderer.java:355) [tomahawk20-1.1.14.jar:1.1.14]
    at org.apache.myfaces.custom.navmenu.htmlnavmenu.HtmlNavigationMenuRenderer.preprocessNavigationItems(HtmlNavigationMenuRenderer.java:340) [tomahawk20-1.1.14.jar:1.1.14]
    at org.apache.myfaces.custom.navmenu.htmlnavmenu.HtmlNavigationMenuRenderer.encodeEnd(HtmlNavigationMenuRenderer.java:175) [tomahawk20-1.1.14.jar:1.1.14]
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919) [jboss-jsf-api_2.2_spec-2.2.8.jar:2.2.8]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863) [jboss-jsf-api_2.2_spec-2.2.8.jar:2.2.8]
    at javax.faces.render.Renderer.encodeChildren(Renderer.java:176) [jboss-jsf-api_2.2_spec-2.2.8.jar:2.2.8]
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889) [jboss-jsf-api_2.2_spec-2.2.8.jar:2.2.8]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856) [jboss-jsf-api_2.2_spec-2.2.8.jar:2.2.8]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859) [jboss-jsf-api_2.2_spec-2.2.8.jar:2.2.8]
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:456) [jsf-impl-2.2.8-jbossorg-1.jar:]
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:133) [jsf-impl-2.2.8-jbossorg-1.jar:]
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337) [jboss-jsf-api_2.2_spec-2.2.8.jar:2.2.8]
    at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper.renderView(ResourceViewHandlerWrapper.java:169) [tomahawk20-1.1.14.jar:1.1.14]
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337) [jboss-jsf-api_2.2_spec-2.2.8.jar:2.2.8]
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337) [jboss-jsf-api_2.2_spec-2.2.8.jar:2.2.8]
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120) [jsf-impl-2.2.8-jbossorg-1.jar:]
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.2.8-jbossorg-1.jar:]
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219) [jsf-impl-2.2.8-jbossorg-1.jar:]
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647) [jboss-jsf-api_2.2_spec-2.2.8.jar:2.2.8]
    ... 20 more

Downgrading the Wildfly to use JSF 2.1.29-04 (which is the latest 2.1.x version) throws the following error: 将Wildfly降级以使用JSF 2.1.29-04(这是最新的2.1.x版本)会引发以下错误:

Caused by: java.lang.ClassNotFoundException: javax.faces.view.ViewScoped from [Module "org.jboss.as.jsf:main" from local module loader @15b3e5b (finder: local module finder @61ca2dfa (roots: /wildfly_8.2.0_final_acd/wildfly_8.2.0_final_acd/modules,/wildfly_8.2.0_final_acd/wildfly_8.2.0_final_acd/modules/system/layers/base))]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:213)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:459)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:408)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:389)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:134)
... 24 more

And in effect the class 实际上是班级

javax.faces.view.ViewScoped

is missing in the jsf-api.jar jsf-api.jar中缺少

Tomahawk for JSF 2.0 is not fully compatible with JSF 2.2. 用于JSF 2.0的Tomahawk与JSF 2.2不完全兼容。 Some components may work, but others may not work. 某些组件可能会起作用,但其他组件可能会不起作用。 The <t:panelNavigation2> is such one. <t:panelNavigation2>就是这样的。 The exception you faced is consequence of a bug in dynamic component tree manipulation (which was previously used to workaround an old JSF 1.x bug in tracking programmatic component tree changes). 您遇到的异常是动态组件树操作中的错误(以前用来解决跟踪程序化组件树更改的旧JSF 1.x错误)的结果。

You have 2 options: 您有2个选择:

  1. Downgrade to JSF 2.1/2.0. 降级到JSF 2.1 / 2.0。 You can use the same instructions as answered here: Upgrade JSF / Mojarra in JBoss AS / EAP / WildFly You'll obviously only miss JSF 2.2 specific features. 您可以按照此处回答的相同说明进行操作: 在JBoss AS / EAP / WildFly中升级JSF / Mojarra您显然只会错过JSF 2.2的特定功能。

  2. Or, drop Tomahawk. 或者,放下战斧。 MyFaces stopped development of Tomahawk (at least, it isn't maintained anymore for years). MyFaces停止了“战斧”的开发(至少,它已经多年没有维护了)。 A lot of utilities/enhancements are already taken over in standard JSF. 标准JSF中已经接管了许多实用程序/增强功能。 As to visual components, look for another UI component library such as PrimeFaces , or just use "plain vanilla" HTML/CSS (if you don't consider IE6/7 as supported browsers, then menus are relatively trivial with <ul><li> and a bit of CSS). 至于视觉组件,请寻找其他UI组件库(例如PrimeFaces) ,或仅使用“普通香草” HTML / CSS(如果您不将IE6 / 7视为受支持的浏览器,则菜单对于<ul><li>和一些CSS)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 javax.faces.FacesException:不能两次添加相同的组件:javascript_runner - javax.faces.FacesException: Cannot add the same component twice: javascript_runner 使用绑定属性会导致javax.faces.FacesException:找不到带有标识符的组件 - Using binding attribute causes javax.faces.FacesException: Cannot find component with identifier jsf:更新组件(表格单元格&lt;-&gt;详细信息面板)=&gt; javax.faces.FacesException:找不到带有表达式的组件 - jsf: update component (table cell <-> detail panel) => javax.faces.FacesException: Cannot find component with expression 复合组件javax.faces.FacesException:在视图中找不到组件“ inputID” - Composite component javax.faces.FacesException: Cannot find component “inputID” in view jsf 1.2到jsf 2.2的迁移原因:javax.faces.FacesException - jsf 1.2 to jsf 2.2 migration causes: javax.faces.FacesException javax.faces.FacesException:找不到滑块目标组件&#39;txt6; txt7&#39;检视 - javax.faces.FacesException: Cannot find slider target component 'txt6; txt7' in view javax.faces.FacesException:断言失败 - javax.faces.FacesException: Assertion Failed javax.faces.FacesException:表达式错误:命名对象:找不到播放器 - javax.faces.FacesException: Expression Error: Named Object: player not found javax.faces.FacesException。 属于Spring Security 3.x的一个例外 - javax.faces.FacesException . It is a exception belongs to Spring Security 3.x javax.faces.FacesException:表达式错误:命名对象:org.omnifaces.component.validator.ValidateMultiple 未找到 - javax.faces.FacesException: Expression Error: Named Object: org.omnifaces.component.validator.ValidateMultiple not found
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM