Partially solved:
The problem is if you define adf core render kit as the default default
render kit, some of the tomahawk/myfaces/facelets components have no
rendering context (not sure which component, cos the exception helpfully
does not tell me), hence the null pointer.
<application>
<default-render-kit-id>
oracle.adf.core
</default-render-kit-id>
</application>
However, if I don't define oracle.adf.core as the default render kit, I
get real ADF components in the component tree but they don't render:
eg. component is:
oracle.adf.view.faces.component.core.input.CoreChooseDate,
renderer=oracle.adf.Date toString=CoreChooseDate[UINodeFacesBean,
id=idp1]
The error is:
Mar 23, 2006 11:36:12 PM
oracle.adf.view.faces.component.UIXComponentBase _getRendererImpl
WARNING: Could not find renderer for
CoreChooseDate[UINodeFacesBean, id=idp1], rendererType = oracle.adf.Date
I commented out the facelets view handler in faces-config.xml and added
the following to web.xml
(I can't seem to see the url http://tinyurl.com/dac6y for the example
web.xml)
<context-param>
<param-name>oracle.adf.view.faces.ALTERNATE_VIEW_HANDLER</param-name>
<param-value>com.sun.facelets.FaceletViewHandler</param-value>
</context-param>
Can I define the ADF render kit just for the ADF components I want to
use?
I presume the alternative is to define a render kit for the MyFaces
components I want to use?
I tried adding some code below to faces-config.xml but it made no
difference to the render.
<render-kit>
<render-kit-id>oracle.adf.core</render-kit-id>
<renderer>
<component-family>oracle.adf.Output</component-family>
<renderer-type>oracle.adf.Formatted</renderer-type>
<renderer-class>oracle.adfinternal.view.faces.renderkit.core.xhtml.Outpu
tFormattedRenderer</renderer-class>
</renderer>
<renderer>
<component-family>oracle.adf.Choose</component-family>
<renderer-type>oracle.adf.Date</renderer-type>
<renderer-class>oracle.adfinternal.view.faces.renderkit.core.xhtml.Choos
eDateRenderer</renderer-class>
</renderer>
<renderer>
<component-family>oracle.adf.Input</component-family>
<renderer-type>oracle.adf.Text</renderer-type>
<renderer-class>oracle.adfinternal.view.faces.renderkit.core.xhtml.Input
TextRenderer</renderer-class>
</renderer>
<renderer>
<component-family>oracle.adf.SelectInput</component-family>
<renderer-type>oracle.adf.Date</renderer-type>
<renderer-class>oracle.adfinternal.view.faces.renderkit.core.xhtml.Selec
tInputDateRenderer</renderer-class>
</renderer>
<renderer>
<component-family>oracle.adf.Object</component-family>
<renderer-type>oracle.adf.Separator</renderer-type>
<renderer-class>oracle.adfinternal.view.faces.uinode.UINodeRendererBase<
/renderer-class>
</renderer>
<renderer>
<component-family>oracle.adf.Command</component-family>
<renderer-type>oracle.adf.Link</renderer-type>
<renderer-class>oracle.adfinternal.view.faces.renderkit.core.xhtml.Comma
ndLinkRenderer</renderer-class>
</renderer>
<renderer>
<component-family>oracle.adf.Panel</component-family>
<renderer-type>oracle.adf.Group</renderer-type>
<renderer-class>oracle.adfinternal.view.faces.renderkit.core.xhtml.Panel
GroupRenderer</renderer-class>
</renderer>
</render-kit>
Also, if I have the ADF jars in my WEB-INF/lib folder in the tree, I
get:
java.lang.IllegalStateException: Duplicate id : _id0. Child could not be
added.
The ADF jars are below:
adf-faces-api-ea20-SNAPSHOT.jar
adf-faces-api-ea20-SNAPSHOT-mock.jar
adf-faces-build-ea20-SNAPSHOT.jar
adf-faces-impl-ea20-SNAPSHOT.jar
Not exactly sure what the mock and build ones are for, but I left them
in the .war anyway.
===============< phase RENDER_RESPONSE(6)>===========
Mar 24, 2006 2:14:34 AM com.sun.facelets.FaceletViewHandler renderView
FINE: Rendering View: /main.xhtml
Mar 24, 2006 2:14:34 AM com.sun.facelets.FaceletViewHandler
getRenderedViewId
FINE: ActionId -> ViewId: /main.xhtml -> /main.xhtml
Mar 24, 2006 2:14:34 AM com.sun.facelets.FaceletViewHandler buildView
FINE: Building View: /main.xhtml
Mar 24, 2006 2:14:34 AM com.sun.facelets.tag.jsf.ComponentHandler apply
FINE: /main.xhtml @12,23 <a:scopeTracker> Component[/main.xhtml#0]
Found, marking children for cleanup
Mar 24, 2006 2:14:34 AM com.sun.facelets.tag.jsf.ComponentHandler apply
FINE: /main.xhtml @23,47 <ui:debug> Component[/main.xhtml#1] Created:
com.sun.facelets.tag.ui.UIDebug
Mar 24, 2006 2:14:34 AM com.sun.facelets.FaceletViewHandler
handleRenderException
SEVERE: Error Rendering View[/main.xhtml]
java.lang.IllegalStateException: Duplicate id : _id0. Child could not be
added.
at
javax.faces.component._ComponentChildrenList.checkAddAllowed(_ComponentC
hildrenList.java:95)
at
javax.faces.component._ComponentChildrenList.add(_ComponentChildrenList.
java:76)
at
com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:17
5)
at
com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandl
er.java:47)
at
com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:4
9)
at
com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandl
er.java:47)
at
com.sun.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:95)
at
com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java:40
8)
at
com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:4
42)
at
oracle.adfinternal.view.faces.application.ViewHandlerImpl.renderView(Vie
wHandlerImpl.java:159)
at
org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:367
)
at
javax.faces.webapp.FacesServlet.service(FacesServlet.java:138)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:252)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:173)
at
oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl._invokeDoFilter(
AdfFacesFilterImpl.java:279)
at
oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl._doFilterImpl(Ad
fFacesFilterImpl.java:248)
at
oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl.doFilter(AdfFace
sFilterImpl.java:172)
at
oracle.adf.view.faces.webapp.AdfFacesFilter.doFilter(AdfFacesFilter.java
:80)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:202)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:173)
at
org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFil
ter.java:93)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:202)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:173)
at
org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFil
ter.java:130)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:202)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:173)
at
oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl._invokeDoFilter(
AdfFacesFilterImpl.java:279)
at
oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl._doFilterImpl(Ad
fFacesFilterImpl.java:248)
at
oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl.doFilter(AdfFace
sFilterImpl.java:172)
at
oracle.adf.view.faces.webapp.AdfFacesFilter.doFilter(AdfFacesFilter.java
:80)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:202)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:173)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
e.java:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
e.java:178)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authenticator
Base.java:432)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
:126)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:105)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
java:107)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:1
48)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:86
9)
at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.proc
essConnection(Http11BaseProtocol.java:667)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint
.java:527)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollow
erWorkerThread.java:80)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
.java:684)
at java.lang.Thread.run(Thread.java:595)
Any help appreciated as this is driving me up the wall. Sorry to spam
both groups but I really don't know if my issue is Facelet related or
MyFaces related.
Regards, Murray