If I change the template to */WEB-INF/templates/basic.xhtml*
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <f:view xmlns="http://www.w3.org/1999/xhtml" xmlns:ui=" http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f=" http://java.sun.com/jsf/core"> <ui:insert name="metadata"/> <html> <h:head> <ui:insert name="header"/> </h:head> <h:body> <ui:insert name="content"/> </h:body> </html> </f:view> Then it seems to work... but the tagdocs on http://javaserverfaces.java.net/nonav/docs/2.0/vdldocs/facelets/f/metadata.html say it should work the way I had things originally.... strange On 29 April 2011 10:23, Stephen Connolly <stephen.alan.conno...@gmail.com>wrote: > Spoke too soon > > :-( > > I'd been checking to see if it was the servlet mapping that was causing the > issues, so I changed the mapping from *.xhtml to *.faces... and I'd > forgotten to change the url in my browser, so I was being served the raw > .xhtml which was rendering the <h2> as a <h2>... > > removing the com.sun.faces.validateXml had no effect > > The problem still exists! > > HELP! > > -Stephen > > > On 29 April 2011 10:10, Stephen Connolly > <stephen.alan.conno...@gmail.com>wrote: > >> Ok, I just found the/a solution. >> >> that was to remove >> >> <context-param> >> <param-name>com.sun.faces.validateXml</param-name> >> <param-value>true</param-value> >> </context-param> >> >> from the web.xml >> >> For some reason this completely ruins the f:metadata tag >> >> Not sure if that is a bug or a "feature" but might as well post the >> solution anyway so that others might benefit >> >> -Stephen >> >> On 29 April 2011 10:08, Stephen Connolly <stephen.alan.conno...@gmail.com >> > wrote: >> >>> Myfaces 2.0.5. >>> >>> I have been reading the JSF docs on the f:metadata tag..., e.g. >>> http://javaserverfaces.java.net/nonav/docs/2.0/vdldocs/facelets/f/metadata.htmland >>> http://myfaces.apache.org/core20/myfaces-impl/tlddoc-facelets/index.html >>> >>> I cannot seem to get f:metadata to work, e.g. >>> >>> */WEB-INF/templates/basic.xhtml* >>> >>> <?xml version="1.0" encoding="utf-8"?> >>> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" >>> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> >>> <html xmlns="http://www.w3.org/1999/xhtml" >>> xmlns:ui="http://java.sun.com/jsf/facelets" >>> xmlns:h="http://java.sun.com/jsf/html" >>> xmlns:f="http://java.sun.com/jsf/core" >>> > >>> <h:head> >>> <ui:insert name="header"/> >>> </h:head> >>> <h:body> >>> <f:view> >>> <ui:insert name="metadata"/> >>> <ui:insert name="content"/> >>> </f:view> >>> </h:body> >>> </html> >>> >>> >>> and then reference that template >>> >>> */test.xhtml* >>> <?xml version="1.0" encoding="utf-8"?> >>> <ui:composition xmlns="http://www.w3.org/1999/xhtml" >>> xmlns:ui="http://java.sun.com/jsf/facelets" >>> xmlns:h="http://java.sun.com/jsf/html" >>> xmlns:f="http://java.sun.com/jsf/core" >>> template="/WEB-INF/templates/basic.xhtml"> >>> <ui:define name="metadata"> >>> <f:metadata> >>> <f:viewParam name="id"/> >>> </f:metadata> >>> </ui:define> >>> <ui:define name="content"> >>> <h1>The big news stories of the day</h1> >>> </ui:define> >>> </ui:composition> >>> >>> >>> whenever i try to access the test.xhtml view I get the following: >>> >>> *[In Jetty 8.0.0.M2] >>> * >>> >>> HTTP ERROR 500 >>> >>> Problem accessing /test.xhtml. Reason: >>> >>> /test.xhtml at line 8 and column 19 <f:metadata> Parent UIComponent >>> j_id1187866547_41aebe2a should be instance of UIViewRoot >>> Caused by: >>> >>> javax.faces.view.facelets.TagException: /test.xhtml at line 8 and column >>> 19 <f:metadata> Parent UIComponent j_id1187866547_41aebe2a should be >>> instance of UIViewRoot >>> at >>> org.apache.myfaces.view.facelets.tag.jsf.core.ViewMetadataHandler.apply(ViewMetadataHandler.java:61) >>> at >>> org.apache.myfaces.view.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:86) >>> at >>> org.apache.myfaces.view.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:167) >>> at >>> org.apache.myfaces.view.facelets.impl.TemplateContextImpl$TemplateManagerImpl.apply(TemplateContextImpl.java:128) >>> at >>> org.apache.myfaces.view.facelets.impl.TemplateContextImpl.includeDefinition(TemplateContextImpl.java:92) >>> at >>> org.apache.myfaces.view.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:433) >>> at >>> org.apache.myfaces.view.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:93) >>> at >>> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:51) >>> at >>> org.apache.myfaces.view.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:156) >>> at >>> javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:59) >>> at >>> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:324) >>> at >>> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:54) >>> at >>> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:51) >>> at >>> org.apache.myfaces.view.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:57) >>> at >>> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:51) >>> at >>> org.apache.myfaces.view.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:45) >>> at >>> org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:322) >>> at >>> org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:369) >>> at >>> org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:347) >>> at >>> org.apache.myfaces.view.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:215) >>> at >>> org.apache.myfaces.view.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:140) >>> at >>> org.apache.myfaces.view.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:57) >>> at >>> org.apache.myfaces.view.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:45) >>> at >>> org.apache.myfaces.view.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:143) >>> at >>> org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.buildView(FaceletViewDeclarationLanguage.java:327) >>> at >>> org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:66) >>> at >>> org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239) >>> at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191) >>> at >>> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:546) >>> at >>> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:483) >>> at >>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) >>> at >>> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:516) >>> at >>> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:230) >>> at >>> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:956) >>> at >>> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:411) >>> at >>> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:188) >>> at >>> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:891) >>> at >>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) >>> at >>> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:247) >>> at >>> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:151) >>> at >>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:114) >>> at org.eclipse.jetty.server.Server.handle(Server.java:353) >>> at >>> org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:598) >>> at >>> org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:1059) >>> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:590) >>> at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:212) >>> at >>> org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:427) >>> at >>> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:510) >>> at >>> org.eclipse.jetty.io.nio.SelectChannelEndPoint.access$000(SelectChannelEndPoint.java:34) >>> at >>> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40) >>> at >>> org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:450) >>> at java.lang.Thread.run(Thread.java:680) >>> >>> >>> [In Tomcat 7.0.12] >>> >>> HTTP Status 500 - >>> >>> type Exception report >>> >>> message >>> >>> description The server encountered an internal error () that prevented it >>> from fulfilling this request. >>> >>> exception >>> >>> javax.servlet.ServletException: /test.xhtml at line 8 and column 19 >>> <f:metadata> Parent UIComponent j_id1187866547_41aebe2a should be instance >>> of UIViewRoot >>> javax.faces.webapp.FacesServlet.service(FacesServlet.java:205) >>> root cause >>> >>> javax.faces.view.facelets.TagException: /test.xhtml at line 8 and column >>> 19 <f:metadata> Parent UIComponent j_id1187866547_41aebe2a should be >>> instance of UIViewRoot >>> org.apache.myfaces.view.facelets.tag.jsf.core.ViewMetadataHandler.apply(ViewMetadataHandler.java:61) >>> >>> org.apache.myfaces.view.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:86) >>> org.apache.myfaces.view.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:167) >>> >>> org.apache.myfaces.view.facelets.impl.TemplateContextImpl$TemplateManagerImpl.apply(TemplateContextImpl.java:128) >>> org.apache.myfaces.view.facelets.impl.TemplateContextImpl.includeDefinition(TemplateContextImpl.java:92) >>> >>> org.apache.myfaces.view.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:433) >>> org.apache.myfaces.view.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:93) >>> >>> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:51) >>> org.apache.myfaces.view.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:156) >>> >>> javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:59) >>> org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:324) >>> >>> javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:54) >>> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:51) >>> >>> org.apache.myfaces.view.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:57) >>> javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:51) >>> >>> org.apache.myfaces.view.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:45) >>> org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:322) >>> >>> org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:369) >>> org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:347) >>> >>> org.apache.myfaces.view.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:215) >>> org.apache.myfaces.view.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:140) >>> >>> org.apache.myfaces.view.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:57) >>> org.apache.myfaces.view.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:45) >>> >>> org.apache.myfaces.view.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:143) >>> org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.buildView(FaceletViewDeclarationLanguage.java:327) >>> >>> org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:66) >>> org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239) >>> javax.faces.webapp.FacesServlet.service(FacesServlet.java:191) >>> note The full stack trace of the root cause is available in the Apache >>> Tomcat/7.0.12 logs. >>> >>> Apache Tomcat/7.0.12 >>> >>> >>> Which says it's not the container... >>> >>> If I try direct with no template, e.g. >>> >>> test2.xhtml >>> <?xml version="1.0" encoding="utf-8"?> >>> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" >>> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> >>> <html xmlns="http://www.w3.org/1999/xhtml" >>> xmlns:ui="http://java.sun.com/jsf/facelets" >>> xmlns:h="http://java.sun.com/jsf/html" >>> xmlns:f="http://java.sun.com/jsf/core" >>> > >>> <h:head> >>> <ui:insert name="header"/> >>> </h:head> >>> <h:body> >>> <f:view> >>> <f:metadata> >>> <f:viewParam name="id"/> >>> </f:metadata> >>> <h1>The big news stories of the day</h1> >>> </f:view> >>> </h:body> >>> </html> >>> >>> Then I get: >>> >>> javax.servlet.ServletException: /test2.xhtml at line 14 and column 21 >>> <f:metadata> Parent UIComponent j_id1723811066_66bf44b9 should be instance >>> of UIViewRoot >>> javax.faces.webapp.FacesServlet.service(FacesServlet.java:205) >>> >>> >>> Which tells me I must be reading >>> http://javaserverfaces.java.net/nonav/docs/2.0/vdldocs/facelets/f/metadata.htmlseriously >>> wrong >>> >>> Oh, before I forget, here is my web.xml >>> >>> <?xml version="1.0" encoding="UTF-8"?> >>> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" >>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee >>> http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> >>> <context-param> >>> <param-name>javax.faces.STATE_SAVING_METHOD</param-name> >>> <param-value>server</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>javax.faces.FACELETS_SKIP_COMMENTS</param-name> >>> <param-value>true</param-value> >>> </context-param> >>> <context-param> >>> <param-name>javax.faces.PROJECT_STAGE</param-name> >>> <!--<param-value>Production</param-value>--> >>> <param-value>Development</param-value> >>> </context-param> >>> <context-param> >>> <param-name>com.sun.faces.validateXml</param-name> >>> <param-value>true</param-value> >>> </context-param> >>> <listener> >>> >>> <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class> >>> </listener> >>> >>> <servlet> >>> <servlet-name>Faces Servlet</servlet-name> >>> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> >>> <load-on-startup>1</load-on-startup> >>> </servlet> >>> <servlet-mapping> >>> <servlet-name>Faces Servlet</servlet-name> >>> <url-pattern>*.xhtml</url-pattern> >>> </servlet-mapping> >>> >>> <session-config> >>> <session-timeout>60</session-timeout> >>> </session-config> >>> </web-app> >>> >>> Any and all help appreciated >>> >>> -Stephen >>> >> >> >