Bom dia povo, acho que nunca postei nada aqui, então caso esteja no lugar errado me perdoem.
Bom vamo lá, estou desenvolvendo um sistema web com JSF, e estou com um problema, o qual eu sei a razão porém não sei a solução. Vamos as código, ai explico meu problema.
Meu index.xhtml
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:c="http://java.sun.com/jstl/core"
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:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich"
template="template/form_main_base.xhtml">
<ui:define name="navegador_barra">
<h:outputText value="S177" />
</ui:define>
<ui:param name="defaultApplicationBean" value="#{applicationController}" />
<ui:define name="form_principal_title">
<h:outputLabel value="S177 - Sistema de Agendamento de Recursos" />
</ui:define>
<ui:define name="menu">
<a4j:form ajaxSingle="true" ajaxSubmit="true" reRender="miolo2" process="miolo2" style="padding:0; margin:0;">
<rich:toolBar separatorClass="line">
<rich:dropDownMenu>
<f:facet name="label">
<h:outputText value="Arquivo"/>
</f:facet>
<rich:menuSeparator />
<rich:menuItem action="#{applicationController.logout}" submitMode="ajax" value="Sair"/>
</rich:dropDownMenu>
<rich:dropDownMenu>
<f:facet name="label">
<h:outputText value="Administracao"/>
</f:facet>
<rich:menuItem oncomplete="#{rich:component('form_base')}.show()" submitMode="ajax" value="Usuario" >
<f:setPropertyActionListener value="forms/usuario_form.xhtml" target="#{applicationController.url}" />
</rich:menuItem>
</rich:dropDownMenu>
<rich:dropDownMenu>
<f:facet name="label">
<h:outputText value="Casdastro"/>
</f:facet>
<rich:menuItem oncomplete="#{rich:component('form_base')}.show()" submitMode="ajax" value="Empresas">
<f:setPropertyActionListener value="forms/empresa_form.xhtml" target="#{applicationController.url}" />
</rich:menuItem>
<rich:menuItem oncomplete="#{rich:component('form_base')}.show()" submitMode="ajax" value="Eventos">
<f:setPropertyActionListener value="forms/evento_form.xhtml" target="#{applicationController.url}" />
</rich:menuItem>
<rich:menuItem oncomplete="#{rich:component('form_base')}.show()" submitMode="ajax" value="Funcionarios">
<f:setPropertyActionListener value="forms/funcionario_form.xhtml" target="#{applicationController.url}" />
</rich:menuItem>
<rich:menuItem oncomplete="#{rich:component('form_base')}.show()" submitMode="ajax" value="Recursos">
<f:setPropertyActionListener value="forms/recurso_form.xhtml" target="#{applicationController.url}" />
</rich:menuItem>
</rich:dropDownMenu>
<rich:dropDownMenu>
<f:facet name="label">
<h:outputText value="Movimento"/>
</f:facet>
<rich:menuItem oncomplete="#{rich:component('form_base')}.show()" submitMode="ajax" value="Agenda">
<f:setPropertyActionListener value="forms/agenda_form.xhtml" target="#{applicationController.url}" />
</rich:menuItem>
</rich:dropDownMenu>
<rich:dropDownMenu>
<f:facet name="label">
<h:outputText value="Consultas"/>
</f:facet>
</rich:dropDownMenu>
</rich:toolBar>
</a4j:form>
</ui:define>
<ui:define name="toolbar">
<rich:toolBar height="40px" itemSeparator="line">
</rich:toolBar>
</ui:define>
<ui:define name="miolo">
<a4j:outputPanel id="miolo2">
<ui:include src="#{applicationController.url}" />
</a4j:outputPanel>
</ui:define>
<ui:define name="form_principal_login_title">
<h:outputLabel value="S177 - Login" />
</ui:define>
</ui:composition>
meu template do index.xhtml
<?xml version="1.0" encoding="ISO-8859-1"?>
<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:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<head>
<title><ui:insert name="navegador_barra">Titulo aplicacao</ui:insert></title>
</head>
<a4j:outputPanel id="application">
<rich:modalPanel rendered="#{defaultApplicationBean.logged}" showWhenRendered="true" id="form_principal" width="1000" height="500" left="auto" top="auto" resizeable="false" moveable="false">
<f:facet name="header">
<ui:insert name="form_principal_title">Titulo aplicacao</ui:insert>
</f:facet>
<rich:layout>
<rich:layoutPanel position="top">
<rich:panelBar height="30px" style="padding:0; margin:0;">
<ui:insert name="menu">Menu</ui:insert>
</rich:panelBar>
<rich:panelBar height="42px" style="padding:0; margin:0;">
<ui:insert name="toolbar">Toolbar</ui:insert>
</rich:panelBar>
</rich:layoutPanel>
<rich:layoutPanel position="bottom">
<rich:panelBar height="80%">
<ui:insert name="miolo">Miolo</ui:insert>
</rich:panelBar>
</rich:layoutPanel>
</rich:layout>
</rich:modalPanel>
<rich:modalPanel rendered="#{not defaultApplicationBean.logged}" showWhenRendered="true" id="form_principal_login" left="auto" top="auto" resizeable="false">
<f:facet name="header">
<ui:insert name="form_principal_login_title">Titulo aplicacao login</ui:insert>
</f:facet>
<a4j:form style="padding:0; margin:0;">
<h:panelGrid columns="2">
<h:outputLabel value="Login:"/>
<h:inputText maxlength="30" value="#{defaultApplicationBean.user.LOGIN}" />
<h:outputLabel value="Senha:"/>
<h:inputSecret maxlength="30" value="#{defaultApplicationBean.user.SENHAWEB}" />
<h:commandButton action="#{defaultApplicationBean.login}" value="Login" />
<h:commandButton type="reset" value="Limpar" />
</h:panelGrid>
</a4j:form>
</rich:modalPanel>
</a4j:outputPanel>
</ui:composition>
meu formulário, que é praticamente igual a todos os formulários do sistema.
<?xml version="1.0" encoding="ISO-8859-1"?>
<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:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich"
template="../template/form_base.xhtml">
<ui:define name="form_bean">
<ui:param name="defaultBean" value="#{eventoController}" />
<a4j:keepAlive beanName="eventoController" />
</ui:define>
<ui:define name="form_name">
<h:outputText value="Formulario de Eventos" />
</ui:define>
<ui:define name="search_box">
<h:inputText />
<h:commandButton image="images/find.gif" alt="Pesquisar"></h:commandButton>
</ui:define>
<ui:define name="grid_coluns">
<rich:column width="70px">
<f:facet name="header">
<h:outputText value="Codigo" />
</f:facet>
<h:outputText value="#{bean.CODEVE}"></h:outputText>
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Descricao" />
</f:facet>
<h:outputText value="#{bean.DESEVE}"></h:outputText>
</rich:column>
</ui:define>
<ui:define name="form_panel_name">
<h:outputLabel value="Cadastro de evento"/>
</ui:define>
<ui:define name="form_panel_inputs">
<h:panelGrid columns="2">
<h:outputLabel value="Descricao:"/>
<h:inputText style="width:190px;" maxlength="30" value="#{eventoController.evento.DESEVE}" />
</h:panelGrid>
</ui:define>
</ui:composition>
meu template base dos formulários
<?xml version="1.0" encoding="ISO-8859-1"?>
<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:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<ui:insert name="form_bean"/>
<rich:modalPanel id="form_base" width="800" height="400">
<f:facet name="header">
<ui:insert name="form_name" >Fomulario Base</ui:insert>
</f:facet>
<f:facet name="controls">
<a4j:commandButton image="images/close.gif" onclick="#{rich:component('form_base')}.hide()">
</a4j:commandButton>
</f:facet>
<rich:panelBar height="30px" style="padding:1px; margin:0;">
<rich:toolBar height="30px" itemSeparator="line">
<rich:toolBarGroup>
<a4j:form ajaxSubmit="true" reRender="form" style="padding:0; margin:0;">
<a4j:commandButton action="#{defaultBean.clearBean}" image="images/new.gif" alt="Incluir" onclick="#{rich:component('form_base_panel')}.show()">
</a4j:commandButton>
</a4j:form>
</rich:toolBarGroup>
<rich:toolBarGroup location="right" >
<a4j:form ajaxSubmit="true" reRender="grid" style="padding:0; margin:0;">
<h:panelGrid columns="2">
<ui:insert name="search_box" ></ui:insert>
</h:panelGrid>
</a4j:form>
</rich:toolBarGroup>
</rich:toolBar>
</rich:panelBar>
<rich:panelBar style="padding:1px; margin:0;">
<rich:dataTable rows="10" width="100%" id="grid" var="bean" value="#{defaultBean.beans}">
<ui:insert name="grid_coluns"></ui:insert>
<rich:column width="40px">
<a4j:form ajaxSubmit="true" style="padding:0; margin:0;">
<a4j:commandButton ajaxSingle="true" reRender="form" image="images/edit.gif" alt="Editar" onclick="#{rich:component('form_base_panel')}.show()" >
<f:setPropertyActionListener value="#{bean}" target="#{defaultBean.bean}" />
</a4j:commandButton>
<a4j:commandButton ajaxSingle="true" onclick="#{rich:component('form_base_panel_delete')}.show()" image="images/delete.gif" value="Excluir">
<f:setPropertyActionListener value="#{bean}" target="#{defaultBean.bean}" />
</a4j:commandButton>
</a4j:form>
</rich:column>
<f:facet name="footer">
<a4j:form ajaxSubmit="true" style="padding:0; margin:0;">
<rich:datascroller maxPages="5" ajaxSingle="true" />
</a4j:form>
</f:facet>
</rich:dataTable>
</rich:panelBar>
<rich:modalPanel id="form_base_panel" width="550">
<f:facet name="header">
<ui:insert name="form_panel_name">Fomulario Base Panel</ui:insert>
</f:facet>
<f:facet name="controls">
<a4j:form ajaxSubmit="true" style="padding:0; margin:0;">
<a4j:commandButton image="images/close.gif" action="#{defaultBean.clearBean}" onclick="#{rich:component('form_base_panel')}.hide()">
</a4j:commandButton>
</a4j:form>
</f:facet>
<a4j:form ajaxSubmit="true" id="form" reRender="grid">
<rich:panelBar height="30px">
<rich:toolBar height="30" itemSeparator="line">
<rich:toolBarGroup>
<a4j:commandButton image="images/save.gif" alt="Salvar" action="#{defaultBean.save}" />
</rich:toolBarGroup>
</rich:toolBar>
</rich:panelBar>
<rich:panelBar>
<ui:insert name="form_panel_inputs" />
</rich:panelBar>
</a4j:form>
</rich:modalPanel>
<rich:modalPanel id="form_base_panel_delete" width="140" height="60">
<f:facet name="header">
<h:outputText value="Confirma exclusao" />
</f:facet>
<f:facet name="controls">
<a4j:form ajaxSubmit="true" style="padding:0; margin:0;">
<a4j:commandButton image="images/close.gif" action="#{defaultBean.clearBean}" onclick="#{rich:component('form_base_panel_delete')}.hide()">
</a4j:commandButton>
</a4j:form>
</f:facet>
<h:panelGrid columns="2">
<h:column>
<a4j:form ajaxSubmit="true" reRender="grid" style="padding:0; margin:0;">
<a4j:commandButton onclick="#{rich:component('form_base_panel_delete')}.hide()" action="#{defaultBean.delete}" value="Sim" />
</a4j:form>
</h:column>
<h:column>
<a4j:commandButton onclick="#{rich:component('form_base_panel_delete')}.hide()" value="Nao" />
</h:column>
</h:panelGrid>
</rich:modalPanel>
</rich:modalPanel>
</ui:composition>
bom, meu problema…
quando eu clico no meu menu para ele modificar o estado da url do applicationController que é de scope session, a action é invocada certinha e é ate atualizado o controller com a nova url do formuário, porém na hora do reRender do miolo2, ele me da um erro dizendo que o bean dentro do formulário base não tem a propriedade solicitada.
Error:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: /forms/evento_form.xhtml @31,42 value="#{bean.CODEVE}": Property 'CODEVE' not found on type br.com.S177.model.bean.Empresa
javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
root cause
javax.el.PropertyNotFoundException: /forms/evento_form.xhtml @31,42 value="#{bean.CODEVE}": Property 'CODEVE' not found on type br.com.S177.model.bean.Empresa
com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:73)
javax.faces.component.UIOutput.getValue(UIOutput.java:184)
com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:201)
com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:284)
com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:154)
javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)
org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:281)
org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:279)
org.richfaces.renderkit.AbstractRowsRenderer.encodeCellChildren(AbstractRowsRenderer.java:288)
org.richfaces.renderkit.AbstractTableRenderer.encodeOneRow(AbstractTableRenderer.java:387)
org.richfaces.renderkit.AbstractRowsRenderer.process(AbstractRowsRenderer.java:83)
org.ajax4jsf.model.SequenceDataModel.walk(SequenceDataModel.java:101)
org.ajax4jsf.component.UIDataAdaptor.walk(UIDataAdaptor.java:1133)
org.richfaces.renderkit.AbstractRowsRenderer.encodeRows(AbstractRowsRenderer.java:104)
org.richfaces.renderkit.AbstractRowsRenderer.encodeRows(AbstractRowsRenderer.java:88)
org.richfaces.renderkit.AbstractTableRenderer.encodeTBody(AbstractTableRenderer.java:90)
org.richfaces.renderkit.AbstractTableRenderer.encodeChildren(AbstractTableRenderer.java:97)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
org.richfaces.renderkit.html.PanelBarRenderer.doEncodeChildren(PanelBarRenderer.java:168)
org.richfaces.renderkit.html.PanelBarRenderer.doEncodeChildren(PanelBarRenderer.java:163)
org.ajax4jsf.renderkit.RendererBase.encodeChildren(RendererBase.java:120)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
org.richfaces.renderkit.html.ModalPanelRenderer.doEncodeChildren(ModalPanelRenderer.java:387)
org.richfaces.renderkit.html.ModalPanelRenderer.doEncodeChildren(ModalPanelRenderer.java:382)
org.ajax4jsf.renderkit.RendererBase.encodeChildren(RendererBase.java:120)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:279)
org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
org.ajax4jsf.renderkit.html.AjaxOutputPanelRenderer.encodeChildren(AjaxOutputPanelRenderer.java:78)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:166)
org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
org.ajax4jsf.renderkit.AjaxContainerRenderer.encodeAjax(AjaxContainerRenderer.java:123)
org.ajax4jsf.component.AjaxViewRoot.encodeAjax(AjaxViewRoot.java:677)
org.ajax4jsf.component.AjaxViewRoot.encodeChildren(AjaxViewRoot.java:548)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592)
org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.
continuando, dessa forma eu suponho, que quando o form chama o reRender do miolo2, ele não esta atualizando o defaultBean, dessa forma gostaria de saber se é possível forçar a execução total da url do formulário novo, no reRender