Hi,
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.
Why is this needed?
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