Fala povo (do bem :lol: ).
No meu projeto web(jsf), tenho alguns cadastros baseados em uma template ai fica a listagem em uma aba e edição/adição em outra,
os meus managed-beans estavam todos como session ai resolvi passá-los para request então, configurei o faces-config, implementei a
interface Serializable e coloquei o a:keepAlive para meu bean ai acontece o seguinte:
quando entro na página vai para a aba de listagem clico em um link para ir para a aba de inserção, coloco os dados, porem, quando clico no a4j:commandButton nada acontece(nem vai para a outra aba, nem executa o bean(inserir)),
alguem pode me ajudar?? :?:
faces-config:
<managed-bean>
<managed-bean-name>funcionalidadeCrudBean</managed-bean-name>
<managed-bean-class>
br.com.extranet.web.acesso.FuncionalidadeCrudBean
</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
FuncionalidadeCrudBean
public class FuncionalidadeCrudBean extends DefaultCrud implements Serializable {
private static final long serialVersionUID = -6219733732611724843L;
public void adicionar() {
Ejbs.getFuncionalidadeBean().adicionar(funcionalidade);
initFuncionalidade();
selecionarTabListagem();
FacesUtil.addInfoMessage("Salvo com sucesso");
}
//demais métodos e propriedades
}
funcionalidade.xhtml
<ui:composition template="/paginas/templates/crudTab.xhtml">
<!-- passa parâmetro para o template -->
<ui:param name="defaultBean" value="#{funcionalidadeCrudBean}" />
<ui:define name="blocoListagem">
<a4j:keepAlive beanName="funcionalidadeCrudBean"/>
<a4j:commandLink value="#{msg.botaoAdicionar}" action="#{funcionalidadeCrudBean.prepararAdicao}" reRender="tabPanelCrud" />
<rich:dataTable value="#{funcionalidadeCrudBean.funcionalidades}" var="funcionalidade" style="width:100%">
<f:facet name="header">
<rich:columnGroup>
<rich:column>
<h:outputText value="Nome"/>
<rich:column>
<h:outputText value="#{msg.botaoEditar} / #{msg.botaoExcluir}"/>
</rich:column>
</rich:columnGroup>
</f:facet>
<rich:column width="150">
<h:outputText value="#{funcionalidade.nome}" />
<rich:column width="90">
<a4j:commandLink value="#{msg.botaoEditar}" action="#{funcionalidadeCrudBean.prepararEdicao}" reRender="tabPanelCrud" >
<f:param value="#{funcionalidade.codigo}" name="paramCodigo"/>
</a4j:commandLink>
<h:outputText value=" / " />
<a4j:commandLink value="#{msg.botaoExcluir}" action="#{funcionalidadeCrudBean.excluir}" reRender="tabPanelCrud"
onclick="if (!confirm('Deseja excluir esta Funcionalidade(#{funcionalidade.nome})?')) return false;">
<f:param value="#{funcionalidade.codigo}" name="paramCodigo"/>
</a4j:commandLink>
</rich:column>
</rich:dataTable>
</ui:define>
<ui:define name="blocoEdicao">
<h:panelGrid columns="2" id="panel2" columnClasses="odd-row,even-row">
<h:outputLabel value="Nome " />
<h:inputText value="#{funcionalidadeCrudBean.funcionalidade.nome}" size="30" required="true" label="Nome" maxlength="50"/>
<h:outputLabel value="Descrição " />
<h:inputTextarea value="#{funcionalidadeCrudBean.funcionalidade.descricao}" required="true" label="Descrição" />
<h:outputLabel value="Módulo " />
<h:selectOneListbox value="#{funcionalidadeCrudBean.funcionalidade.modulo.codigo}" size="1" required="true" label="Módulo" id="modulo">
<f:selectItems value="#{funcionalidadeCrudBean.listaModulos}"/>
</h:selectOneListbox>
<a4j:commandButton value="#{msg.botaoSalvar}" action="#{funcionalidadeCrudBean.adicionar}" reRender="tabPanelCrud" rendered="#{funcionalidadeCrudBean.navegacao.adicionarState}" styleClass="botao"/>
<a4j:commandButton value="#{msg.botaoSalvar}" action="#{funcionalidadeCrudBean.editar}" reRender="tabPanelCrud" rendered="#{funcionalidadeCrudBean.navegacao.editarState}" styleClass="botao"/>
<a4j:commandButton value="#{msg.botaoListar}" action="#{funcionalidadeCrudBean.listar}" reRender="tabPanelCrud" immediate="true" styleClass="botao"/>
</h:panelGrid>
<h:messages showDetail="true" showSummary="false" />
</ui:define>
</ui:composition>
crudTab.xhtml
<ui:define name="corpo">
<a4j:form>
<a4j:jsFunction name="atualizarTabPanel" reRender="tabPanelCrud"/>
</a4j:form>
<rich:tabPanel switchType="ajax" selectedTab="#{defaultBean.tabSelecionada}" id="tabPanelCrud">
<!-- bloco de pesquisa -->
<rich:tab label="#{defaultBean.labelTabListagem}" id="tabListagem" action="#{defaultBean.selecionarTabListagem}" immediate="true">
<a4j:form id="formPesquisa">
<ui:insert name="blocoListagem">
Tab de Listagem #1
</ui:insert>
</a4j:form>
</rich:tab>
<!-- bloco de edição -->
<rich:tab label="#{defaultBean.labelTabEdicao}" id="tabEdicao" action="#{defaultBean.selecionarTabEdicao}" immediate="true">
<a4j:form id="formCadEdit">
<ui:insert name="blocoEdicao">
Tab de Edição #2
</ui:insert>
</a4j:form>
</rich:tab>
</rich:tabPanel>
</ui:define>
:!: valew pela ajuda :!: