Pessoal, sou iniciante em j2ee e peguei uma aplicação pronta e sai customizando. Até um certo momento eu sei o que faz, mas em outros não, que foi uma dúvida que surgiu. Tenho meu arquivo.xhtml, mas só tenho um e ele tem varias paginas. Explicando melhor:
- Tem a página que aparece a grid retornando dados do banco;
- Tem um botão novo que ao clicar só aparece um formulário para cadastrar novos dados e a grid já não aparece mais.
Quero entender como isso acontece, de clicar em um botão e ele ir só para o form, de clicar em outro e ir só para a grid… QUERO SABER COMO FUNCIONA!
Para via das dúvidas ai está o 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:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:composition template="/templates/default.xhtml">
<ui:param name="titulo" value="#{msg['produto.panel.header.geral']}"/>
<ui:define name="conteudo">
<p:outputPanel id="opPrincipal" autoUpdate="false">
<p:panel id="pnlPrincipal"
header="#{produtoBean.mensagemHeader}"
footer="#{produtoBean.mensagemFooter}">
<h:form id="frmProdutoEditaDados" prependId="false">
<p:outputPanel id="opEditaDados"
rendered="#{produtoBean.editaDados}">
<p:messages id="msgEditaDados"
rendered="#{produtoBean.mostraMensagemEditaDados}"
globalOnly="true"/>
<h:panelGrid id="pgProduto"
styleClass="panelGrid"
columns="2"
cellpadding="3"
cellspacing="3"
columnClasses="columnLabel30,columnInput70">
<h:outputLabel value="* #{msg['produto.descricao']}:"/>
<h:panelGroup>
<p:inputText id="inpDescricao"
value="#{produtoBean.descricao}"
maxlength="100"
size="90"/>
<p:message for="inpDescricao" display="text"/>
</h:panelGroup>
<h:outputLabel value="* #{msg['produto.unidadeMedida']}:"/>
<h:panelGroup>
<h:selectOneMenu id="inpUnidade"
value="#{produtoBean.unidade}">
<f:selectItems value="#{applicationBean.listUnidadeMedida}"/>
</h:selectOneMenu>
<p:message for="inpUnidade" display="text"/>
</h:panelGroup>
<h:outputLabel value="* #{msg['produto.kg']}:"/>
<h:panelGroup>
<p:inputText id="inpKg"
value="#{produtoBean.kg}"
maxlength="5"
size="3"
onkeypress="return SomenteNumero(event)"/>
<p:message for="inpKg" display="text"/>
</h:panelGroup>
<h:panelGroup/>
<h:panelGroup>
<p:commandButton id="btnSalvar"
icon="ui-icon-disk"
value="#{msg['button.salvar']}"
title="#{msg['button.salvar.title']}"
accesskey="#{msg['button.salvar.accesskey']}"
onclick="jQuery(this).attr('disabled', true);"
oncomplete="jQuery(this).attr('disabled', false); jQuery('#dtProduto\\:clmDescricao_filter').focus(); jQuery('#inpDescricao').focus();"
action="#{produtoBean.salvar}"
styleClass="button100"
update=":opPrincipal"/>
<span style="padding-left:3px;"/>
<p:commandButton id="btnCancelar"
icon="ui-icon-cancel"
value="#{msg['button.cancelar']}"
title="#{msg['button.cancelar.title']}"
accesskey="#{msg['button.cancelar.accesskey']}"
oncomplete="jQuery('#dtProduto\\:clmDescricao_filter').focus();"
action="#{produtoBean.cancelar}"
styleClass="button100"
update=":opPrincipal"/>
</h:panelGroup>
</h:panelGrid>
</p:outputPanel>
</h:form>
<h:form id="frmProdutoGeral" prependId="false">
<p:outputPanel id="opGeral"
rendered="#{!produtoBean.editaDados}">
<p:messages id="msgGeral" rendered="#{produtoBean.mostraMensagemGeral}"/>
<h:panelGrid styleClass="panelGridBarraFerramenta100"
cellpadding="0"
cellspacing="0"
columns="2"
columnClasses="panelGridColumnLeft50,panelGridColumnRight50">
<p:commandButton id="btnNovoSuperior"
icon="ui-icon-document"
value="#{msg['button.novo']}"
title="#{msg['button.novo.title']}"
accesskey="#{msg['button.novo.accesskey']}"
oncomplete="jQuery('#inpDescricao').focus();"
action="#{produtoBean.incluir}"
styleClass="button100"
update=":opPrincipal"/>
<p:commandButton id="btnRecarregarSuperior"
icon="ui-icon-arrowrefresh-1-e"
value="#{msg['button.recarregar']}"
title="#{msg['button.recarregar.title']}"
accesskey="#{msg['button.recarregar.accesskey']}"
onclick="jQuery('#dtProduto\\:clmDescricao_filter').attr('value','');
jQuery('#dtProduto\\:clmUnidade_filter').attr('value','');
jQuery('#dtProduto\\:clmKg_filter').attr('value','');"
oncomplete="jQuery('#dtProduto\\:clmDescricao_filter').focus();"
action="#{produtoBean.init}"
styleClass="button100"
update=":opPrincipal"/>
</h:panelGrid>
<p:dataTable id="dtProduto"
style="padding-top:10px;padding-bottom:10px;"
styleClass="dataTable"
var="produto"
value="#{produtoBean.listProduto}"
paginator="true"
paginatorTemplate="#{cfg['dataTable.paginatorTemplate']}"
currentPageReportTemplate="#{cfg['dataTable.currentPageReportTemplate']}"
rows="20"
rowsPerPageTemplate="#{cfg['dataTable.rowsPerPageTemplate']}"
rowStyleClass="#{empty rowId or rowId mod 2 ne 0 ? 'evenRow' : 'oddRow'}"
rowIndexVar="rowId"
emptyMessage="#{msg['datatable.empty']}">
<p:column id="clmEditar"
styleClass="dtProdutoAcao">
<p:commandLink id="lnkEditar"
title="#{msg['button.editar']}"
oncomplete="jQuery('#inpDescricao').focus();"
action="#{produtoBean.editar}"
update=":opPrincipal">
<p:graphicImage value="/resources/imagens/editar.png"/>
<f:setPropertyActionListener value="#{produto}"
target="#{produtoBean.produto}"/>
</p:commandLink>
<p:spacer width="10"/>
<p:commandLink id="lnkRemover"
title="#{msg['button.remover']}"
oncomplete="confirmarRemoverRegistro.show();
jQuery('#btnConfirmarRemoverRegistroNao').focus();"
update=":opPrincipal">
<p:graphicImage value="/resources/imagens/remover.png"/>
<f:setPropertyActionListener value="#{produto}"
target="#{produtoBean.produto}"/>
</p:commandLink>
</p:column>
<p:column id="clmDescricao"
sortBy="#{produto.descricao}"
filterBy="#{produto.descricao}"
filterMatchMode="contains"
filterStyle="width:65%"
styleClass="dtProdutoDescricao">
<f:facet name="header">
<h:outputText value="#{msg['produto.descricao']}"/>
</f:facet>
<h:outputText value="#{produto.descricao}"/>
</p:column>
<p:column id="clmUnidade"
sortBy="#{produto.unidade.descricao}"
filterBy="#{produto.unidade.descricao}"
filterMatchMode="contains"
filterStyle="width:25%"
styleClass="dtProdutoUnidade">
<f:facet name="header">
<h:outputText value="#{msg['produto.unidadeMedida']}"/>
</f:facet>
<h:outputText value="#{produto.unidade.descricao}"/>
</p:column>
<p:column id="clmKg"
sortBy="#{produto.kg}"
filterBy="#{produto.kg}"
filterMatchMode="contains"
filterStyle="width:20%"
styleClass="dtProdutoKg">
<f:facet name="header">
<h:outputText value="#{msg['produto.kg']}"/>
</f:facet>
<h:outputText value="#{produto.kg}"/>
</p:column>
</p:dataTable>
<h:panelGrid styleClass="panelGrid100"
cellpadding="0"
cellspacing="0"
columns="2"
columnClasses="panelGridColumnLeft50,panelGridColumnRight50">
<p:commandButton id="btnNovoInferior"
icon="ui-icon-document"
value="#{msg['button.novo']}"
title="#{msg['button.novo.title']}"
oncomplete="jQuery('#inpDescricao').focus();"
action="#{produtoBean.incluir}"
styleClass="button100"
update=":opPrincipal"/>
<p:commandButton id="btnRecarregarInferior"
icon="ui-icon-arrowrefresh-1-e"
value="#{msg['button.recarregar']}"
title="#{msg['button.recarregar.title']}"
onclick="jQuery('#dtProduto\\:clmDescricao_filter').attr('value','');
jQuery('#dtProduto\\:clmUnidade_filter').attr('value','');
jQuery('#dtProduto\\:clmKg_filter').attr('value','');"
oncomplete="jQuery('#dtProduto\\:clmDescricao_filter').focus();"
action="#{produtoBean.init}"
styleClass="button100"
update=":opPrincipal"/>
</h:panelGrid>
</p:outputPanel>
<p:confirmDialog id="dlgConfirmarRemoverRegistro"
header="#{msg['geral.confirmar.remover.registro.header']}"
message="#{msg['geral.confirmar.remover.registro']} #{produtoBean.produto.descricao} ?"
severity="alert"
modal="true"
widgetVar="confirmarRemoverRegistro">
<p:commandButton id="btnConfirmarRemoverRegistroSim"
value="#{msg['geral.sim']}"
update=":opPrincipal"
oncomplete="jQuery('#dtProduto\\:clmDescricao').click();
jQuery('#dtProduto\\:clmDescricao_filter').focus();
confirmarRemoverRegistro.hide();"
actionListener="#{produtoBean.remover}"/>
<p:commandButton id="btnConfirmarRemoverRegistroNao"
value="#{msg['geral.nao']}"
onclick="confirmarRemoverRegistro.hide();"
oncomplete="jQuery('#dtProduto\\:clmDescricao_filter').focus()"/>
</p:confirmDialog>
</h:form>
</p:panel>
</p:outputPanel>
</ui:define>
</ui:composition>
</html>
Agradeço desde já pela força.