Olá pessoal,
Estou começando agora com JSF depois de um longo e tenebroso inverno de Struts e estou com uma dúvida que está me tirando o sono faz dias!!!
Quero inserir uma página dinamicamente através de um Menu, daqueles estilinhos básicos (Menu a esquerda + Cabeçalho + COnteúdo a direita).
Para começar estou apenas tentando inserir uma página externa através da tag <a4j:include> desta maneira:
Página Teste que irá conter uma outra (o menu):
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:rich="http://richfaces.org/rich"
xmlns:richfaces="http://richfaces.ajax4jsf.org/rich"
xmlns:ajax="https://ajax4jsf.dev.java.net/ajax"
xmlns:a4j="http://richfaces.org/a4j">
<f:view id="teste">
<h:outputText value="teste aqui;;;" />
<a4j:outputPanel>
<ajax:include viewId="/pages/menu.xhtml" />
</a4j:outputPanel>
</f:view>
</ui:composition>
Abaixo seria a página do menu:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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"
xmlns:rich="http://richfaces.org/rich"
xmlns:richfaces="http://richfaces.ajax4jsf.org/rich"
xmlns:ajax="https://ajax4jsf.dev.java.net/ajax"
xmlns:a4j="http://richfaces.org/a4j">
<f:subview id="subMenu">
<rich:panelMenu style="width:200px" mode="ajax"
iconExpandedGroup="disc" iconCollapsedGroup="disc"
iconExpandedTopGroup="chevronUp" iconGroupTopPosition="right"
iconCollapsedTopGroup="chevronDown">
<rich:panelMenuGroup label="Ponto Eletrônico">
<rich:panelMenuItem label="Marcar"
action="#{marcaPonto.getPontoEletronico}">
<a4j:keepAlive beanName="marcaPonto" />
<f:param name="current" value="Item 1" />
</rich:panelMenuItem>
</rich:panelMenuGroup>
<rich:panelMenuGroup label="Group 2">
<rich:panelMenuItem label="Item 2.1" action="#">
<f:param name="current" value="Item 2.1" />
</rich:panelMenuItem>
<rich:panelMenuItem label="Item 2.2" action="#">
<f:param name="current" value="Item 2.2" />
</rich:panelMenuItem>
<rich:panelMenuItem label="Item 2.3" action="#">
<f:param name="current" value="Item 2.3" />
</rich:panelMenuItem>
<rich:panelMenuGroup label="Group 2.4">
<rich:panelMenuItem label="Item 2.4.1" action="#">
<f:param name="current" value="Item 2.4.1" />
</rich:panelMenuItem>
<rich:panelMenuItem label="Item 2.4.2" action="#">
<f:param name="current" value="Item 2.4.2" />
</rich:panelMenuItem>
<rich:panelMenuItem label="Item 2.4.3" action="#">
<f:param name="current" value="Item 2.4.3" />
</rich:panelMenuItem>
</rich:panelMenuGroup>
<rich:panelMenuItem label="Item 2.5" action="#">
<f:param name="current" value="Item 2.5" />
</rich:panelMenuItem>
</rich:panelMenuGroup>
<rich:panelMenuGroup label="Group 3">
<rich:panelMenuItem label="Item 3.1" action="#">
<f:param name="current" value="Item 3.1" />
</rich:panelMenuItem>
<rich:panelMenuItem label="Item 3.2" action="#">
<f:param name="current" value="Item 3.2" />
</rich:panelMenuItem>
<rich:panelMenuItem label="Item 3.3" action="#">
<f:param name="current" value="Item 3.3" />
</rich:panelMenuItem>
</rich:panelMenuGroup>
</rich:panelMenu>
</f:subview>
</ui:composition>
Tudo funciona perfeitamente sozinho, mas quando coloco a chamada Ajax dentro da primeira página dá o seguinte erro:
09:26:09,006 ERROR [STDERR] 23/03/2009 09:26:09 com.sun.facelets.FaceletViewHandler handleRenderException
SEVERE: Error Rendering View[/pages/teste.xhtml]
java.io.NotSerializableException: com.sun.faces.context.FacesContextImpl
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
at java.util.HashMap.writeObject(HashMap.java:1000)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
at com.sun.faces.renderkit.ResponseStateManagerImpl.writeState(ResponseStateManagerImpl.java:244)
at javax.faces.render.ResponseStateManager.writeState(ResponseStateManager.java:155)
at org.ajax4jsf.application.AjaxStateManager.writeState(AjaxStateManager.java:294)
at org.ajax4jsf.application.AjaxStateManager.writeState(AjaxStateManager.java:256)
at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:606)
at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
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:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
at java.lang.Thread.run(Thread.java:619)
Desde já agradeço a colaboração galera!
Abraço.