> I found something surprising, while working on a Tomahawk application, in > which I added Trinidad for a couple of components. > Trinidad overrides default renderers of some javax.faces.* components like > Form, HtmlCommandButton and HtmlCommandLink.
indeed. > > Why is this needed? because the JSF spec is poor ? Well... :) These component details know to much abo > I noticed it adds some custom scripts. > BUT why should it be so intrusive in the default renderers? > > The problem that made me find this was that I got some exceptions in the > tomahawk PPR. > Except on some pages, the only Trinidad component I use is tr:document to > have the skinning enabled. > I definitely expect for the Tomahawk PPR within a h:form and containing an > h:commandButton to work. > > i got this stack trace on a PPR submit: > > javax.faces.FacesException: Exception while calling encodeEnd on component : > {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: > /pages/configuration/configAssessmentModuleEdit.xhtml][Class: > org.apache.myfaces.trinidad.component.core.CoreDocument,Id: j_id1][Class: > javax.faces.component.html.HtmlForm,Id: mform][Class: > org.apache.myfaces.custom.tabbedpane.HtmlPanelTabbedPane,Id: > moduleEditTab][Class: org.apache.myfaces.custom.tabbedpane.HtmlPanelTab,Id: > childrenTab][Class: org.apache.myfaces.custom.ppr.PPRPanelGroup,Id: > pprQuestionEdit][Class: javax.faces.component.html.HtmlPanelGroup,Id: > j_id174]} > at > javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:559) > at > org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils.renderChild(RendererUtils.java:420) > at > org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils.renderChildren(RendererUtils.java:401) > at > org.apache.myfaces.custom.ppr.PPRPanelGroupRenderer.encodeChildren(PPRPanelGroupRenderer.java:93) > at > javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:543) > at > org.apache.myfaces.custom.ppr.PPRPhaseListener.encodeTriggeredComponents(PPRPhaseListener.java:288) > at > org.apache.myfaces.custom.ppr.PPRPhaseListener.processPartialPageRequest(PPRPhaseListener.java:169) > at > org.apache.myfaces.custom.ppr.PPRPhaseListener.beforePhase(PPRPhaseListener.java:94) > at > org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListenersBefore(PhaseListenerManager.java:73) > at > org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:134) > at javax.faces.webapp.FacesServlet.service(FacesServlet.java:152) > at > org.apache.myfaces.webapp.MyFacesServlet.service(MyFacesServlet.java:100) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > com.db.gto.coo.itsg.gui.login.LoginFilter.doHttpFilter(LoginFilter.java:131) > at > com.db.gto.coo.itsg.gui.filter.SpringJSFFilterBase.doFilter(SpringJSFFilterBase.java:47) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:226) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:63) > at > org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96) > at > org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263) > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) > at > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584) > at > org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) > at java.lang.Thread.run(Thread.java:619) > Caused by: javax.faces.FacesException: Exception while calling encodeEnd on > component : {Component-Path : [Class: > javax.faces.component.UIViewRoot,ViewId: > /pages/configuration/configAssessmentModuleEdit.xhtml][Class: > org.apache.myfaces.trinidad.component.core.CoreDocument,Id: j_id1][Class: > javax.faces.component.html.HtmlForm,Id: mform][Class: > org.apache.myfaces.custom.tabbedpane.HtmlPanelTabbedPane,Id: > moduleEditTab][Class: org.apache.myfaces.custom.tabbedpane.HtmlPanelTab,Id: > childrenTab][Class: org.apache.myfaces.custom.ppr.PPRPanelGroup,Id: > pprQuestionEdit][Class: javax.faces.component.html.HtmlPanelGroup,Id: > j_id174][Class: org.apache.myfaces.custom.subform.SubForm,Id: > questionForm][Class: javax.faces.component.html.HtmlPanelGrid,Id: j_id181]} > at > javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:559) > at > org.apache.myfaces.shared_impl.renderkit.RendererUtils.renderChild(RendererUtils.java:515) > at > org.apache.myfaces.shared_impl.renderkit.RendererUtils.renderChildren(RendererUtils.java:492) > at > org.apache.myfaces.shared_impl.renderkit.RendererUtils.renderChild(RendererUtils.java:513) > at > org.apache.myfaces.shared_impl.renderkit.RendererUtils.renderChildren(RendererUtils.java:492) > at > org.apache.myfaces.shared_impl.renderkit.html.HtmlGroupRendererBase.encodeEnd(HtmlGroupRendererBase.java:92) > at > javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:556) > ... 41 more > Caused by: javax.faces.FacesException: Exception while calling encodeEnd on > component : {Component-Path : [Class: > javax.faces.component.UIViewRoot,ViewId: > /pages/configuration/configAssessmentModuleEdit.xhtml][Class: > org.apache.myfaces.trinidad.component.core.CoreDocument,Id: j_id1][Class: > javax.faces.component.html.HtmlForm,Id: mform][Class: > org.apache.myfaces.custom.tabbedpane.HtmlPanelTabbedPane,Id: > moduleEditTab][Class: org.apache.myfaces.custom.tabbedpane.HtmlPanelTab,Id: > childrenTab][Class: org.apache.myfaces.custom.ppr.PPRPanelGroup,Id: > pprQuestionEdit][Class: javax.faces.component.html.HtmlPanelGroup,Id: > j_id174][Class: org.apache.myfaces.custom.subform.SubForm,Id: > questionForm][Class: javax.faces.component.html.HtmlPanelGrid,Id: > j_id181][Class: javax.faces.component.html.HtmlPanelGroup,Id: j_id191]} > at > javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:559) > at > org.apache.myfaces.shared_impl.renderkit.RendererUtils.renderChild(RendererUtils.java:515) > at > org.apache.myfaces.shared_impl.renderkit.html.HtmlGridRendererBase.renderChildren(HtmlGridRendererBase.java:221) > at > org.apache.myfaces.shared_impl.renderkit.html.HtmlGridRendererBase.encodeEnd(HtmlGridRendererBase.java:102) > at > javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:556) > ... 47 more > Caused by: javax.faces.FacesException: Exception while calling encodeBegin > on component : {Component-Path : [Class: > javax.faces.component.UIViewRoot,ViewId: > /pages/configuration/configAssessmentModuleEdit.xhtml][Class: > org.apache.myfaces.trinidad.component.core.CoreDocument,Id: j_id1][Class: > javax.faces.component.html.HtmlForm,Id: mform][Class: > org.apache.myfaces.custom.tabbedpane.HtmlPanelTabbedPane,Id: > moduleEditTab][Class: org.apache.myfaces.custom.tabbedpane.HtmlPanelTab,Id: > childrenTab][Class: org.apache.myfaces.custom.ppr.PPRPanelGroup,Id: > pprQuestionEdit][Class: javax.faces.component.html.HtmlPanelGroup,Id: > j_id174][Class: org.apache.myfaces.custom.subform.SubForm,Id: > questionForm][Class: javax.faces.component.html.HtmlPanelGrid,Id: > j_id181][Class: javax.faces.component.html.HtmlPanelGroup,Id: > j_id191][Class: javax.faces.component.html.HtmlCommandButton,Id: > questionSave]} > at > javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:531) > at > org.apache.myfaces.shared_impl.renderkit.RendererUtils.renderChild(RendererUtils.java:506) > at > org.apache.myfaces.shared_impl.renderkit.RendererUtils.renderChildren(RendererUtils.java:492) > at > org.apache.myfaces.shared_impl.renderkit.html.HtmlGroupRendererBase.encodeEnd(HtmlGroupRendererBase.java:92) > at > javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:556) > ... 51 more > Caused by: java.lang.NullPointerException > at > org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.AutoSubmitUtils.getFullPageSubmitScript(AutoSubmitUtils.java:105) > at > org.apache.myfaces.trinidadinternal.renderkit.htmlBasic.HtmlCommandButtonRenderer.encodeBegin(HtmlCommandButtonRenderer.java:99) > at > javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:528) > ... 55 more > > -- > Cristi Toth > > ------------- > Codebeat > www.codebeat.ro -- Matthias Wessendorf further stuff: blog: http://matthiaswessendorf.wordpress.com/ sessions: http://www.slideshare.net/mwessendorf mail: matzew-at-apache-dot-org