Alright I found a solution here: http://jira.opensymphony.com/browse/SIM-201 Can somebody please add this to the MyFaces Wiki under the topic Sitemesh?
Shawn On 2/27/07, Garner Shawn <[EMAIL PROTECTED]> wrote:
I did post on the Sitemesh users list. I haven't heard anything back yet. This list is much more active than the sitemesh list. Shawn On 2/27/07, Simon Kitching <[EMAIL PROTECTED]> wrote: > > Well I guess you'll have to look at the source-code for the Sitemesh > PageFilter then, or ask on the Sitemesh list. The problem is clearly > that JSF-specific JSP tags are being executed but not within the scope > of a FacesServlet. That's not a MyFaces problem, so unfortunately you're > not likely to get much further help on this list. > > However if you do get this figured out it would be great if you could > post the solution here (or add a page to the wiki) for anyone who > encounters this in the future. > > Regards, > > Simon > > Garner Shawn wrote: > > I tried this and it didn't work but am unsure why: > > > > "ExternalContext.dispatch to execute the jsp servlet for processing its > > template so maybe it's just as simple as ensuring the decorators file > > for Sitemesh uses ".jsf" urls rather than ".jsp" urls to its template > > files, in order to trigger the FacesServlet rather than just the > > jsp-handler servlet?" > > > > I got close by overriding the sitemesh filter and then doing a > > chain.filter before calling the sitmesh filter. It rendered the page > > ok (not right) but it rendered the original page being decorated > > twice. Once at the beginning and then once later where it should have > > been in the page. > > > > > > Shawn > > On 2/27/07, Simon Kitching <[EMAIL PROTECTED]> wrote: > >> The project I am currently working on uses Sitemesh with MyFaces, ie the > >> pages being *decorated* are JSF and it works. However the templates > >> themselves will need to be JSP only (not JSF) I believe; that's > >> certainly what we do. > >> > >> In order for a JSP page containing JSF tags to work correctly, the JSF > >> FacesServlet must handle it. The FacesServlet sets up some JSF > >> infrastructure on entry, then executes the JSP page (using > >> ExternalContext.dispatch). When JSF-specific tags execute the necessary > >> JSF infrastructure is therefore present. However on completion of the > >> servlet that infrastructure is destroyed by the FacesServlet. > >> > >> What the sitemesh *filter* does is initially pass the incoming request > >> through without change so the primary "decorated" page is fetched, then > >> it determines what decorator template to use and processes that > >> *itself*. Sitemesh sets up the environment for its template to be > >> correctly processed as jsp, but is not smart enough to set up the > >> necessary environment for any JSF tags to execute successfully. And as > >> described above the JSF-specific environment was set up on FacesServlet > >> entry, but removed on FacesServlet exit so it is no longer available. > >> > >> We work around that somewhat by defining a custom "proxyInclude" tag > >> which uses commons-httpclient to make requests. This tag can then be > >> embedded into a Sitemesh template to insert JSF-generated data (in > >> particular, a common header including a JsCookMenu menubar). > >> > >> Maybe the Sitemesh PageFilter could be improved to be JSF-aware but we > >> haven't done that. Hmm..presumably the PageFilter does something like > >> ExternalContext.dispatch to execute the jsp servlet for processing its > >> template so maybe it's just as simple as ensuring the decorators file > >> for Sitemesh uses ".jsf" urls rather than ".jsp" urls to its template > >> files, in order to trigger the FacesServlet rather than just the > >> jsp-handler servlet? > >> > >> Regards, > >> > >> Simon > >> > >> > >> Ricardo Tercero Lozano wrote: > >> > As far as I know you cannot use JSF in Sitemesh decorators. > >> > > >> > Ricardo. > >> > > >> > > >> > On 2/26/07, *Garner Shawn* <[EMAIL PROTECTED] > >> > <mailto:[EMAIL PROTECTED]>> wrote: > >> > > >> > I'm trying to use sitmesh with JSF and am getting the following > >> > exception: > >> > This is my template decorator page and has a f:view page. > >> > Is there something I have to do with this to initialize the > >> > FacesContext for the decorators/templates? > >> > > >> > > >> > javax.faces.FacesException: Faces context not found. > >> getResponseWriter > >> > will fail. Check if the FacesServlet has been initialized at all in > >> > your web.xml configuration fileand if you are accessing your > >> jsf-pages > >> > through the correct mapping. E.g.: if your FacesServlet is > >> mapped to > >> > *.jsf (with the <servlet-mapping>-element), you need to access your > >> > pages as 'sample.jsf'. If you tried to access 'sample.jsp', > >> you'd get > >> > this error-message. > >> > javax.faces.webapp.UIComponentTag.setupResponseWriter > >> > (UIComponentTag.java:926) > >> > > >> > > >> javax.faces.webapp.UIComponentTag.doStartTag(UIComponentTag.java:313) > >> > > >> > org.apache.myfaces.taglib.core.ViewTag.doStartTag(ViewTag.java:73) > >> > > >> > org.apache.jsp.decorators.andreasTemplate_jsp._jspx_meth_f_view_0 > >> > (andreasTemplate_jsp.java:146) > >> > > >> > > >> org.apache.jsp.decorators.andreasTemplate_jsp._jspService(andreasTemplate_jsp.java:122) > >> > >> > > >> > org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) > >> > javax.servlet.http.HttpServlet.service > >> (HttpServlet.java:802) > >> > > >> > > >> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) > >> > >> > > >> > > >> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) > >> > org.apache.jasper.servlet.JspServlet.service > >> > (JspServlet.java:264) > >> > javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > >> > > >> > > >> com.age.j.soft.sitemesh.TemplateFilterImpl.applyDecorator(TemplateFilterImpl.java:49) > >> > >> > com.opensymphony.module.sitemesh.filter.PageFilter.doFilter > >> > (PageFilter.java:62) > >> > > >> > > >> org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144) > >> > >> > > >> > > >> > >> > >

