Hi Adam, sorry that it took me 2 days to reply but I was working on a different project.
Using JSP and MyFaces is kind of a historical thing. I started with JSP and Struts, added Tiles, replaced Struts with MyFaces and now added ADF. Facelets is something I haven't tried yet. About the ClassCastException I had: Right now I can't reproduce it anymore. Might be something else I changed in my application. But anyway, if the signature of the method "protected final void setProperties(UIComponent component)" allows a UIComponent, I would expect that any casting to UIXComponent would make sure if this is possible first. M.Soulier -----Ursprüngliche Nachricht----- Von: Adam Winer [mailto:[EMAIL PROTECTED] Gesendet: Dienstag, 21. März 2006 19:03 An: MyFaces Discussion Betreff: Re: java.lang.NullPointerException during render phase when using ADF and MyFaces Tomahwak components together I confess, I haven't tried Tiles with ADF, largely because Facelets templating is so vastly superior to Tiles (esp. Tiles w/JSF, which is not a good combination.) I'm curious about this class-cast exception you're seeing: why do you have a UIXComponentTag that isn't using a UIXComponent? What tag was this? -- Adam On 3/21/06, Marcel Soulier <[EMAIL PROTECTED]> wrote: > Hi, > > so far I have only used MyFaces and currently I am trying to use the > ADF-Faces Components with it. > > The impression I had about using Tiles with ADF and MyFaces was that I should > use the Tiles Servlet because ADF uses its own ViewHandler which would > collide with the MyFaces JspTilesViewHandler I used before. > > When I was reading Adam's way of setting an alternate ViewHandler in a > context-param I had the idea of using the MyFaces JspTilesViewHandlerImpl in > a similar way for my JSP-based application. > > It works quite well though I encountered a ClassCastException in the > UIXComponentTag class where a UIXComponent is needed in the setProperties > Method. So I put an "if(component instanceof UIXComponent)" inside this > Method and it worked. > > Now the reason for this posting is this: > > Am I going in the right direction here? Are there any side-effects with using > the MyFaces ViewHandler inside an ADF context? > > Or maybe there is a different way of getting the advantages of the > MyFacesViewHandler (e.g. direct usage of tiles-definitions in navigation > rules)? > > Maybe anyone here has already used the combination of JSPs, MyFaces, Tiles, > ADF and can give some advice. > > M.Soulier > > -----Ursprüngliche Nachricht----- > Von: Adam Winer [mailto:[EMAIL PROTECTED] > Gesendet: Dienstag, 21. März 2006 06:50 > An: MyFaces Discussion > Betreff: Re: java.lang.NullPointerException during render phase when using > ADF and MyFaces Tomahwak components together > > Murray, > > You need to install the FaceletViewHandler using: > > <context-param> > <param-name>oracle.adf.view.faces.ALTERNATE_VIEW_HANDLER</param-name> > <param-value>com.sun.facelets.FaceletViewHandler</param-value> > </context-param> > > in WEB-INF/web.xml, not in faces-config.xml. > > Also, not that it's related to this issue, you need to install the ADF Faces > Filter. Check out the config posted in the other thread for all the details. > > -- Adam > > > > On 3/20/06, Murray Brandon <[EMAIL PROTECTED]> wrote: > > Apologies if this topic has been done to death in the group as I've just > > joined. > > I'm sure it's something to do with my configuration of web.xml or > > faces-config.xml, but what? > > Either the AdfRenderingContext isn't attached to the thread or > > getProperties() is returning null. > > I'm using the dump of ADF attached to the myfaces site (ie. > > adf-faces-impl-ea20-SNAPSHOT). > > I don't think it is trying to render any of the ADF tags (same null > > pointer if I comment out the ADF tags), > > this is on render of tomahawk/myfaces tags. > > > > Any help appreciated! > > > > Regards, Murray > > ======================================================================== > > === > > > > SEVERE: Error Rendering View[/main.xhtml] > > java.lang.NullPointerException > > at > > oracle.adfinternal.view.faces.uinode.FacesRenderingContext.setRenderingP > > roperty(FacesRenderingContext.java:157) > > at > > oracle.adfinternal.view.faces.ui.RenderedNodeRenderingContext.setPropert > > y(RenderedNodeRenderingContext.java:162) > > at > > oracle.adfinternal.view.faces.ui.RootRenderingContext.init(RootRendering > > Context.java:81) > > at > > oracle.adfinternal.view.faces.uinode.FacesRenderingContext.<init>(FacesR > > enderingContext.java:106) > > at > > oracle.adfinternal.view.faces.uinode.FacesRenderingContext.createRenderi > > ngContext(FacesRenderingContext.java:79) > > at > > oracle.adfinternal.view.faces.uinode.UINodeRendererBase.getRenderingCont > > ext(UINodeRendererBase.java:89) > > at > > oracle.adfinternal.view.faces.uinode.FacesRenderingContext.getRenderingC > > ontext(FacesRenderingContext.java:66) > > at > > oracle.adfinternal.view.faces.uinode.FacesRenderingContext.getRenderingC > > ontext(FacesRenderingContext.java:52) > > at > > oracle.adfinternal.view.faces.renderkit.htmlBasic.UINodeRenderer.getRend > > eringContext(UINodeRenderer.java:79) > > at > > oracle.adfinternal.view.faces.renderkit.htmlBasic.UINodeRenderer.encodeB > > egin(UINodeRenderer.java:38) > > at > > javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:5 > > 12) > > at > > com.sun.facelets.FaceletViewHandler.encodeRecursive(FaceletViewHandler.j > > ava:555) > > at > > com.sun.facelets.FaceletViewHandler.encodeRecursive(FaceletViewHandler.j > > ava:562) > > at > > com.sun.facelets.FaceletViewHandler.encodeRecursive(FaceletViewHandler.j > > ava:562) > > at > > com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:4 > > 57) > > 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 > > 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 > > 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) > > > > > > From FacesRenderingContext.java: > > > > protected void setRenderingProperty(Object key, Object value) > > { > > _adfRenderingContext.getProperties().put(key, value); > > } > > > > > > web.xml > > > > <?xml version='1.0' encoding='UTF-8'?> > > > > <!DOCTYPE web-app PUBLIC > > "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" > > "http://java.sun.com/dtd/web-app_2_3.dtd"> > > > > > > <web-app> > > : > > : > > <context-param> > > <param-name>facelets.LIBRARIES</param-name> > > > > <param-value>/WEB-INF/facelet/aui.taglib.xml;/WEB-INF/facelet/tomahawk.t > > aglib.xml;/WEB-INF/facelet/af.taglib.xml</param-value> > > </context-param> > > > > <context-param> > > <param-name>javax.faces.STATE_SAVING_METHOD</param-name> > > <param-value>client</param-value> > > </context-param> > > > > <context-param> > > <param-name>facelets.DEVELOPMENT</param-name> > > <param-value>true</param-value> > > </context-param> > > > > <context-param> > > <param-name>javax.faces.DEFAULT_SUFFIX</param-name> > > <param-value>.xhtml</param-value> > > </context-param> > > > > <context-param> > > <param-name>com.sun.faces.validateXml</param-name> > > <param-value>false</param-value> > > <description> > > Set this flag to true if you want the JavaServer Faces > > Reference Implementation to validate the XML in your > > faces-config.xml resources against the DTD. Default > > value is false. > > </description> > > </context-param> > > > > <context-param> > > <param-name>com.sun.faces.verifyObjects</param-name> > > <param-value>true</param-value> > > <description> > > Set this flag to true if you want the JavaServer Faces > > Reference Implementation to verify that all of the > > application > > objects you have configured (components, converters, > > renderers, and validators) can be successfully created. > > Default value is false. > > </description> > > </context-param> > > > > <!-- Faces Servlet --> > > <servlet> > > <servlet-name>Faces Servlet</servlet-name> > > <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> > > <load-on-startup> 1 </load-on-startup> > > </servlet> > > > > <!-- Faces Servlet Mapping --> > > <servlet-mapping> > > <servlet-name>Faces Servlet</servlet-name> > > <url-pattern>*.jsf</url-pattern> > > </servlet-mapping> > > > > <security-constraint> > > <!-- This security constraint illustrates how JSP pages > > with JavaServer Faces components can be protected from > > being accessed without going through the Faces Servlet. > > The security constraint ensures that the Faces Servlet will > > be used or the pages will not be processed. --> > > <display-name>Restrict access to JSP pages</display-name> > > <web-resource-collection> > > <web-resource-name> > > Restrict access to JSP pages > > </web-resource-name> > > <url-pattern>/greeting.xhtml</url-pattern> > > <url-pattern>/response.xhtml</url-pattern> > > </web-resource-collection> > > <auth-constraint> > > <description> > > With no roles defined, no access granted > > </description> > > </auth-constraint> > > </security-constraint> > > > > > > <!-- XXXXXXXXXXXXXXXXXXXXXX Apache MyFaces XXXXXXXXXXXXXXXXXXXXXXXX > > --> > > <filter> > > <filter-name>MyFacesExtensionsFilter</filter-name> > > > > <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter- > > class> > > <init-param> > > <param-name>maxFileSize</param-name> > > <param-value>20m</param-value>> <description>Set > > the size limit for uploaded files. > > Format: 10 - 10 bytes > > 10k - 10 KB > > 10m - 10 MB > > 1g - 1 GB > > </description> > > </init-param> > > </filter> > > > > <!-- extension mapping for adding <script/>, <link/>, and other > > resource tags to JSF-pages --> > > <filter-mapping> > > <filter-name>MyFacesExtensionsFilter</filter-name> > > <servlet-name>Faces Servlet</servlet-name> > > </filter-mapping> > > > > <!-- extension mapping for serving page-independent resources > > (javascript, stylesheets, images, etc.) --> > > <filter-mapping> > > <filter-name>MyFacesExtensionsFilter</filter-name> > > <url-pattern>/faces/myFacesExtensionResource/*</url-pattern> > > </filter-mapping> > > > > > > <!-- XXXXXXXXXXXXXXXXXXXXXX Oracle ADF faces XXXXXXXXXXXXXXXXXXXXXX > > --> > > <context-param> > > <param-name>oracle.adf.view.faces.ALTERNATE_VIEW_HANDLER > > </param-name> > > <param-value>com.sun.facelets.FaceletViewHandler > > </param-value> > > </context-param> > > > > <context-param> > > <param-name>facelets.VIEW_MAPPINGS</param-name> > > <param-value>*.xhtml</param-value> > > </context-param> > > > > <servlet-mapping> > > <servlet-name>Faces Servlet</servlet-name> > > <url-pattern>/faces/*</url-pattern> > > </servlet-mapping> > > </web-app> > > > > > > > > faces-config.xml: > > > > <?xml version="1.0"?> > > > > > > <!DOCTYPE faces-config PUBLIC > > "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN" > > "http://java.sun.com/dtd/web-facesconfig_1_0.dtd"> > > > > <faces-config> > > > > <application> > > <view-handler>com.sun.facelets.FaceletViewHandler</view-handler> > > </application> > > > > <application> > > <locale-config> > > <default-locale>en_UK</default-locale> > > </locale-config> > > </application> > > > > <application> > > <default-render-kit-id> > > oracle.adf.core > > </default-render-kit-id> > > </application> > > > > </faces-config> > > > > > > >