Boa Noite,
Pessoal estou desenvolvendo uma aplicação para universidade e estou precisando da ajuda de vocês;
Estou usando ajax "ajaxRendered="true"" para incluir as paginas no formulário principal mais isto está gerando um problema nos componentes richfaces quando utilizado "onkeypress", "onkeydown". Existe outra forma para incluir as páginas ??? O correto seria utilizar actions para passar para outras páginas ?? Se sim, como ???
Segue os códigos utilizados:
Principal Template:
<?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:a4j="http://richfaces.org/a4j"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:rich="http://richfaces.org/rich"
xmlns:ui="http://java.sun.com/jsf/facelets">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Principal</title>
</head>
<body>
<ui:composition template="templatePrincipal.xhtml" >
<ui:define name="menu">
<ui:include src="frmMenu.xhtml" />
</ui:define>
<ui:define name="conteudo">
<a4j:outputPanel ajaxRendered="true">
<a4j:include viewId="#{MenuAction.corrente}"/>
</a4j:outputPanel>
</ui:define>
<ui:define name="rodape">
Desenvolvido por: Woodpecker - Usuário: #{LoginAction.userName}
</ui:define>
</ui:composition>
</body>
</html>
Menu
<?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"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<head>
<link href="./css/menu.css" rel="stylesheet" type="text/css" />
</head>
<body>
<ui:composition>
<h:form id="form">
<h:panelGrid columns="2" columnClasses="cols" width="100%">
<rich:panelMenu style="width:186px" mode="ajax"
iconExpandedGroup="disc" iconCollapsedGroup="disc"
iconExpandedTopGroup="chevronUp" iconGroupTopPosition="right"
iconCollapsedTopGroup="chevronDown" iconCollapsedTopPosition="right" >
<rich:panelMenuGroup label="Cadastros">
<rich:panelMenuItem label="Cidade" value="frmCidade.xhtml" actionListener="#{MenuAction.updateCurrent}" >
</rich:panelMenuItem>
<rich:panelMenuItem label="Usuário" value="frmUsuario.xhtml" actionListener="#{MenuAction.updateCurrent}" >
</rich:panelMenuItem>
<rich:panelMenuItem label="Teste" value="newFacelets.xhtml" actionListener="#{MenuAction.updateCurrent}" >
</rich:panelMenuItem>
<rich:panelMenuItem label="Produto" value="frmProduto.xhtml" actionListener="#{MenuAction.updateCurrent}" >
</rich:panelMenuItem>
<rich:panelMenuItem label="Fornecedor" value="frmFornecedorAj.xhtml" actionListener="#{MenuAction.updateCurrent}" >
</rich:panelMenuItem>
<rich:panelMenuItem label="Padrão" value="frmPadrao.xhtml" actionListener="#{MenuAction.updateCurrent}" >
</rich:panelMenuItem>
</rich:panelMenuGroup>
<rich:panelMenuGroup label="Movimentação">
<rich:panelMenuItem label="Orçamento" value="frmOrcamento.xhtml" actionListener="#{MenuAction.updateCurrent}" >
</rich:panelMenuItem>
</rich:panelMenuGroup>
<rich:panelMenuGroup label="Relatórios">
<rich:panelMenuItem label="Relatório de Produto" value="frmRelatorio.xhtml" actionListener="#{MenuAction.updateCurrent}" >
</rich:panelMenuItem>
</rich:panelMenuGroup>
</rich:panelMenu>
</h:panelGrid>
#{MenuAction.correnteR}
#{MenuAction.corrente}
</h:form>
</ui:composition>
</body>
</html>
MenuACtion
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.bcs.action;
import javax.faces.event.ActionEvent;
import org.richfaces.component.UIPanelMenuItem;
public class MenuAction {
private String corrente;
/** Creates a new instance of menu */
public MenuAction() {
this.setCorrente("frmPadrao.xhtml");
}
/**
* @return the corrente
*/
public String getCorrente() {
return corrente;
}
/**
* @param corrente the corrente to set
*/
public void setCorrente(String corrente) {
this.corrente = corrente;
}
public void updateCurrent(ActionEvent event) {
this.setCorrente(((UIPanelMenuItem)event.getComponent()).getValue().toString());
}
public String comandoAvancar(){
return "paginaInicio";
}
}
<?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>
<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"
xmlns:ajax="https://ajax4jsf.dev.java.net/ajax"
xmlns:c="http://java.sun.com/jstl/core">
<head>
<link href="./css/estilos.css" rel="stylesheet" type="text/css" />
<title>
<ui:insert name="title">
Cadastro de Fornecedores
</ui:insert>
</title>
<style type="text/css">
.odd-row {
background-color: #ECF3FE;
}
.even-row {
background-color: #FCFFFE;
}
.col {
text-align: center;
}
.col2 {
text-align: right;
}
.col3 {
text-align: left;
background-color: #ECF3FE;
}
.col4 {
text-align: left;
}
</style>
</head>
<!-- define searchlistBlock -->
<body>
<f:view>
<a4j:outputPanel ajaxRendered="false" id="mainOutputPanel">
<a4j:form>
<!-- bloco de pesquisa -->
<rich:panel id="searchlistBlock" rendered="#{FornecedorAction.pesquisarState}" style="text-align:center;" >
<f:facet name="header" >
Pesquisar
</f:facet>
<h:panelGrid columns="1">
<h:column>
<rich:spacer height="20" />
<a4j:commandButton value="Adicionar" action="#{FornecedorAction.prepareAdicionar}" immediate="true"/>
</h:column>
</h:panelGrid>
<rich:spacer height="20" />
<rich:dataTable width="683" id="fornecedorList" rows="10" reRender="ds" ajaxSingle="true"
rowClasses="odd-row,even-row"
columnClasses="col" value="#{FornecedorAction.fornecedores}" var="row">
<rich:column sortBy="#{row.codigo}" >
<f:facet name="header">
<h:outputText styleClass="headerText" value="Código" />
</f:facet>
<h:outputText value="#{row.codigo}" />
</rich:column>
<rich:column sortBy="#{row.nome}" >
<f:facet name="header">
<h:outputText styleClass="headerText" value="Nome" />
</f:facet>
<h:outputText value="#{row.nome}" />
</rich:column>
<rich:column sortBy="#{row.cpfCnpj}" >
<f:facet name="header">
<h:outputText styleClass="headerText" value="CPF/CNPJ" />
</f:facet>
<h:outputText value="#{row.cpfCnpj}" />
</rich:column>
<rich:column sortBy="#{row.cidade.descricao}" >
<f:facet name="header">
<h:outputText styleClass="headerText" value="Cidade" />
</f:facet>
<h:outputText value="#{row.cidade.descricao}" />
</rich:column>
<rich:column width="50" >
<f:facet name="header">
<h:outputText styleClass="headerText" value="Ações" />
</f:facet>
<span>
<a4j:commandLink action="#{FornecedorAction.prepareEditar}" immediate="true">
<h:graphicImage value="/imagens/edit.gif" style="border:0"/>
<f:setPropertyActionListener value="#{row}" target="#{FornecedorAction.fornecedor}"/>
</a4j:commandLink>
</span>
<!-- <span>
<a4j:commandLink immediate="true" action="#{FornecedorAction.getFornecedores}" oncomplete="Richfaces.showModalPanel('panel',{width:550, top:200});">
<h:graphicImage value="/imagens/delete.gif" style="border:0"/>
<f:setPropertyActionListener value="#{row}" target="#{FornecedorAction.fornecedor}"/>
</a4j:commandLink>
</span> -->
</rich:column>
<f:facet name="footer" styleClass="footerText" >
<rich:datascroller align="center" id="ds" renderIfSinglePage="false" maxPages="20" />
</f:facet>
</rich:dataTable>
<rich:modalPanel id="panel" width="350" height="100">
<f:facet name="header">
<h:panelGroup>
<h:outputText value="Confirmação"></h:outputText>
</h:panelGroup>
</f:facet>
<f:facet name="controls">
<h:panelGroup>
<h:graphicImage value="imagens/images.jpeg" styleClass="hidelink" id="hidelink"/>
<rich:componentControl for="panel" attachTo="hidelink" operation="hide" event="onclick"/>
</h:panelGroup>
</f:facet>
<h:outputText value="Deseja excluir a fornecedor selecionada ?"></h:outputText>
<br/><br/>
<a4j:commandButton value="excluir" action="#{FornecedorAction.excluir}" immediate="true">
</a4j:commandButton>
<a4j:commandButton value="cancelar" action="#{FornecedorAction.voltar}" immediate="true">
</a4j:commandButton>
</rich:modalPanel>
<rich:spacer height="20" />
</rich:panel>
<!-- define addUpdateBlock -->
<rich:panel id="addUpdateBlock" style="text-align:center;" rendered="#{FornecedorAction.adicionarState or FornecedorAction.editarState}">
<f:facet name="header">
Dados
</f:facet>
<rich:spacer height="20" />
<h:panelGrid witch="300" columns="3" border="0" id="panel2" binding="#{FornecedorAction.panelForm}" columnClasses="col4">
<h:outputLabel value="Tipo:"/>
<h:column>
<rich:comboBox id="tipo" value="#{FornecedorAction.fornecedor.tipo}" maxlength="10" size="10" defaultLabel="Fisica" required="true"
requiredMessage="Campo Tipo de fornecedor é obrigatório." selectFirstOnUpdate="true" >
<f:selectItem itemValue="Fisica" />
<f:selectItem itemValue="Juridica"/>
</rich:comboBox>
</h:column>
<h:column>
<h:message for="tipo" errorStyle="color: darkred;"/>
</h:column>
<h:outputLabel value="CPF / CNPJ:"/>
<h:column>
<h:inputText value="#{FornecedorAction.cpfCnpj}" maxlength="20" size="20" required="true" id="cpfcnpj"
requiredMessage="Campo CPF / CNPJ é obrigatório." >
<a4j:support action="#{FornecedorAction.verificaFornecedor}" ajaxSingle="true" event="onblur" reRender="rgInscricao"/>
</h:inputText>
</h:column>
<h:column>
<h:message for="cpfcnpj" errorStyle="color: darkred;"/>
</h:column>
<h:outputLabel value="RG / Inscrição:"/>
<h:column >
<h:inputText ajaxRendered="true" value="#{FornecedorAction.fornecedor.rgInscricao}" maxlength="20" size="20" required="true" id="rgInscricao"
requiredMessage="Campo RG / Inscrição é obrigatório." />
</h:column>
<h:column>
<h:message for="rgInscricao" errorStyle="color: darkred;"/>
</h:column>
<h:outputLabel value="Nome:"/>
<h:column>
<h:inputText value="#{FornecedorAction.fornecedor.nome}" maxlength="20" size="20" required="true" id="nome"
requiredMessage="Campo nome é obrigatório." />
</h:column>
<h:column>
<h:message for="nome" errorStyle="color: darkred;"/>
</h:column>
<h:outputLabel value="Nome Fantasia:"/>
<h:column>
<h:inputText value="#{FornecedorAction.fornecedor.nomeFantasia}" maxlength="100" size="50" required="true" id="nomeFantasia"
requiredMessage="Campo nome fantasia é obrigatório." />
</h:column>
<h:column>
<h:message for="nomeFantasia" errorStyle="color: darkred;"/>
</h:column>
<h:outputLabel value="Endereço:"/>
<h:column>
<h:inputText value="#{FornecedorAction.fornecedor.endereco}" maxlength="100" size="50" id="endereco" />
</h:column>
<h:column>
</h:column>
<h:outputLabel value="Bairro:"/>
<h:column>
<h:inputText value="#{FornecedorAction.fornecedor.bairro}" maxlength="25" size="25" id="bairro" />
</h:column>
<h:column>
</h:column>
<h:outputLabel value="Telefone:"/>
<h:column>
<h:inputText value="#{FornecedorAction.fornecedor.fone}" maxlength="20" size="20" id="fone" />
</h:column>
<h:column>
</h:column>
<h:outputLabel value="Telefax:"/>
<h:column>
<h:inputText value="#{FornecedorAction.fornecedor.fax}" maxlength="40" size="40" id="fax" />
</h:column>
<h:column>
</h:column>
<h:outputLabel value="Cidade:"/>
<h:column>
<h:inputText value="#{FornecedorAction.codigoCidade}" readonly="true" maxlength="4" size="4" required="true" id="codigoCidade"
requiredMessage="Campo cidade é obrigatório." />
<h:inputText value="#{FornecedorAction.descricaoCidade}" maxlength="20" size="20" id="cidade" >
<a4j:support ajaxSingle="true" event="onblur"
reRender="codigoCidade, cidade, cep">
</a4j:support>
</h:inputText>
<h:outputLink value="#" id="link">
Digite o nome da cidade para pesquisa
<rich:componentControl for="selectCidade" ajaxSingle="false" immediate="true" attachTo="link" operation="show" event="onclick"/>
</h:outputLink>
</h:column>
<h:column>
</h:column>
<h:outputLabel value="CEP:"/>
<h:column>
<h:inputText value="#{FornecedorAction.fornecedor.cep}" maxlength="10" size="10" id="cep" />
</h:column>
<h:column>
</h:column>
<h:outputLabel value="eMail:"/>
<h:column>
<h:inputText value="#{FornecedorAction.fornecedor.email}" maxlength="40" size="40" id="email" />
</h:column>
<h:column>
</h:column>
<h:outputLabel value="Contato:"/>
<h:column>
<h:inputText value="#{FornecedorAction.fornecedor.contato}" maxlength="40" size="40" id="contato" />
</h:column>
<h:column>
</h:column>
<h:outputLabel value="Observação:"/>
<h:column>
<h:inputTextarea value="#{FornecedorAction.fornecedor.observacao}" style="height: 46px; width: 336px" maxlength="255" size="255" id="observacao" />
</h:column>
</h:panelGrid>
<rich:spacer height="40" />
<a4j:commandButton value="Adicionar" action="#{FornecedorAction.adicionar}" rendered="#{FornecedorAction.adicionarState}"/>
<a4j:commandButton value="Salvar" action="#{FornecedorAction.editar}" rendered="#{FornecedorAction.editarState}"/>
<a4j:commandButton value="Voltar" action="#{FornecedorAction.voltar}" immediate="true"/>
<rich:modalPanel id="selectCidade" width="800" height="300" style="text-align:center;" >
<f:facet name="header">
<h:panelGroup>
<h:outputText value="Selecione a cidade: "></h:outputText>
</h:panelGroup>
</f:facet>
<f:facet name="controls">
<h:panelGroup>
<h:graphicImage value="imagens/images.jpeg" styleClass="hidelink1" id="hidelink1"/>
<rich:componentControl for="selectCidade" attachTo="hidelink1" operation="hide" event="onclick"/>
</h:panelGroup>
</f:facet>
<rich:dataTable width="683" id="cidadeList" rows="10" reRender="ds" ajaxSingle="true"
rowClasses="odd-row,even-row"
columnClasses="col" value="#{FornecedorAction.cidades}" var="rowCid">
<rich:column sortBy="#{rowCid.codigo}" >
<f:facet name="header">
<h:outputText styleClass="headerText" value="Código" />
</f:facet>
<h:outputText value="#{rowCid.codigo}" />
</rich:column>
<rich:column sortBy="#{rowCid.descricao}" filter="#{rowCid.descricao}" >
<f:facet name="header">
<h:outputText styleClass="headerText" value="Descrição" />
</f:facet>
<h:outputText value="#{rowCid.descricao}" />
</rich:column>
<rich:column sortBy="#{rowCid.estado}" >
<f:facet name="header">
<h:outputText styleClass="headerText" value="Estado" />
</f:facet>
<h:outputText value="#{rowCid.estado}" />
</rich:column>
<rich:column width="50" >
<f:facet name="header">
<h:outputText styleClass="headerText" value="Ações" />
</f:facet>
<span>
<a4j:commandLink value="Selecionar" immediate="true" ajaxSingle="true" reRender="codigoCidade, cidade" >
<f:setPropertyActionListener value="#{rowCid}" target="#{FornecedorAction.fornecedor.cidade}"/>
<f:setPropertyActionListener value="#{rowCid.codigo}" target="#{FornecedorAction.codigoCidade}"/>
<f:setPropertyActionListener value="#{rowCid.descricao}" target="#{FornecedorAction.descricaoCidade}"/>
</a4j:commandLink>
</span>
</rich:column>
<f:facet name="footer" styleClass="footerText" >
<rich:datascroller align="center" id="ds" renderIfSinglePage="false" maxPages="20" />
</f:facet>
</rich:dataTable>
</rich:modalPanel>
</rich:panel>
</a4j:form>
</a4j:outputPanel>
</f:view>
</body>
</ui:composition>
</html>
FornecedorAction
package br.bcs.action;
import br.bcs.bo.CidadeBo;
import br.bcs.bo.FornecedorBo;
import br.bcs.entity.Fornecedor;
import br.bcs.entity.Cidade;
import java.util.Collection;
import java.util.List;
import javax.faces.model.ListDataModel;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.component.UIComponent;
import javax.faces.component.UIPanel;
import javax.faces.model.DataModel;
/**
*
* @author Márcio Neves
*/
public class FornecedorAction {
public static final String PESQUISAR_STATE = "pesquisar";
public static final String ADICIONAR_STATE = "adicionar";
public static final String EDITAR_STATE = "editar";
private String currentState = PESQUISAR_STATE;
private Fornecedor fornecedor;
protected DataModel fornecedores;
private UIPanel panelForm;
private FornecedorBo fornecedorBo;
private CidadeBo cidadeBo;
protected DataModel cidades;
private String codigoCidade;
private String descricaoCidade;
private String cpfCnpj;
private String jaCadastrado = ""; // String de informação
/** Creates a new instance of CidadeAction */
public FornecedorAction() {
}
public String getCurrentState() {
return currentState;
}
public void setCurrentState(String currentState) {
this.currentState = currentState;
}
public UIPanel getPanelForm() {
return panelForm;
}
public void setPanelForm(UIPanel panelForm) {
this.panelForm = panelForm;
}
/**
* Prepara view adicionar
*/
public String prepareAdicionar() {
this.cpfCnpj = null;
this.codigoCidade = null;
this.descricaoCidade = null;
this.clear();
this.setCurrentState(ADICIONAR_STATE);
return "goToAdicionarFornecedor";
}
/**
* Prepara view adicionar
*/
public String preparePesquisarCidade() {
return "goToAdicionarFornecedor";
}
/**
* Prepara view editar
*/
public String prepareEditar() {
this.setCurrentState(EDITAR_STATE);
this.setCpfCnpj(this.fornecedor.getCpfCnpj());
this.setCodigoCidade(String.valueOf(fornecedor.getCidade().getCodigo()));
this.setDescricaoCidade(String.valueOf(fornecedor.getCidade().getDescricao()));
return "goToEditarFornecedor";
}
public String preparePesquisar() {
this.isPesquisarState();
return "goToPesquisarFornecedor";
}
/*
* Métodos que expõem o estado à página
*/
public boolean isPesquisarState() {
String state = this.getCurrentState();
return (state == null || PESQUISAR_STATE.equals(state));
}
public boolean isAdicionarState() {
return ADICIONAR_STATE.equals(this.getCurrentState());
}
public boolean isEditarState() {
return EDITAR_STATE.equals(this.getCurrentState());
}
/**
* Limpa os componentes filhos para que depois eles possam ser recriados
* @param component
*/
protected void cleanSubmittedValues(UIComponent component) {
component.getChildren().clear();
}
public void setFornecedores(DataModel fornecedores) {
this.fornecedores = fornecedores;
}
public FornecedorBo getFornecedorBo() {
if (fornecedorBo == null) {
fornecedorBo = new FornecedorBo();
}
return fornecedorBo;
}
public DataModel getFornecedores() {
this.setCurrentState(PESQUISAR_STATE);
List<Fornecedor> lista = getFornecedorBo().listFornecedor(currentState, currentState);
fornecedores = new ListDataModel(lista);
return fornecedores;
}
public Fornecedor getFornecedor() {
if (fornecedor == null) {
this.fornecedor = new Fornecedor();
}
return fornecedor;
}
public void setFornecedor(Fornecedor fornecedor) {
this.fornecedor = fornecedor;
}
public String getDescricaoCidade() {
return descricaoCidade;
}
public void setDescricaoCidade(String descricaoCidade) {
this.descricaoCidade = descricaoCidade;
}
/**
* Adiciona usuário
*/
public void adicionar() {
try {
this.getFornecedorBo().saveFornecedor(this.fornecedor, this.getCpfCnpj());
} catch (Exception ex) {
Logger.getLogger(FornecedorAction.class.getName()).log(Level.SEVERE, null, ex);
}
this.getFornecedores();
}
/**
* Edita usuário
*/
public void editar() {
try {
// já edita diretamente na lista (a lista está como static)
this.getFornecedorBo().updateFornecedor(this.fornecedor);
this.cpfCnpj = null;
this.codigoCidade = null;
this.descricaoCidade = null;
} catch (Exception ex) {
Logger.getLogger(FornecedorAction.class.getName()).log(Level.SEVERE, null, ex);
}
this.getFornecedores();
}
public String getCodigoCidade() {
return codigoCidade;
}
public void setCodigoCidade(String codigoCidade) {
this.codigoCidade = codigoCidade;
}
public Collection getEstado() {
return this.cidadeBo.listEstados();
}
public String searchCidade() {
Cidade cidade = new Cidade();
try {
cidade = this.fornecedorBo.searchCidade(Integer.parseInt(codigoCidade));
fornecedor.setCidade(cidade);
} catch (Exception ex) {
}
return null;
}
public CidadeBo getCidadeBo() {
if (cidadeBo == null) {
cidadeBo = new CidadeBo();
}
return cidadeBo;
}
public void setCidades(DataModel cidades) {
this.cidades = cidades;
}
public DataModel getCidades() {
List<Cidade> lista = getCidadeBo().listCidade( "Descricao",this.descricaoCidade );
cidades = new ListDataModel(lista);
return cidades;
}
public String verificaFornecedor() throws Exception {
this.fornecedor = this.fornecedorBo.verificaFornecedor(this.cpfCnpj);
if (this.fornecedor != null) {
codigoCidade = String.valueOf(fornecedor.getCidade().getCodigo());
jaCadastrado = "Fornecedor já cadastrado";
this.prepareEditar();
return null;
}
this.verificaPessoa();
return null;
}
/**
* Metodo que verifica se o Objeto Funcionario
* ja existe no banco de dados.
* Esse metodo é chamado pelo metodo atualizaTipoPessoa()
* desta classe
* @return
* @throws java.lang.Exception
*/
public boolean verificaPessoa() throws Exception {
fornecedor = fornecedorBo.verificaPessoa(getCpfCnpj());
jaCadastrado = "";
this.codigoCidade = "";
if (fornecedor != null) {
codigoCidade = String.valueOf(fornecedor.getCidade().getCodigo());
jaCadastrado = "Fornecedor já cadastrado como pessoa, apenas complete os dados restantes";
return true;
}
fornecedor = new Fornecedor();
return false;
}
/**
* Exclui usuário
public void excluir() {
try {
this.getProdutoBo().deleteProduto(this.produto);
} catch (Exception ex) {
Logger.getLogger(ProdutoAction.class.getName()).log(Level.SEVERE, null, ex);
}
this.getProdutos();
}
* /**
* Referente ao botão voltar
*/
public String voltar() {
this.clear();
this.getFornecedores();
return "goToPesquisarFornecedor";
}
/**
* Limpa atributos
*/
private void clear() {
this.fornecedor = new Fornecedor();
this.cleanSubmittedValues(this.panelForm);
}
/**
* @return the cpfCnpj
*/
public String getCpfCnpj() {
return cpfCnpj;
}
/**
* @param cpfCnpj the cpfCnpj to set
*/
public void setCpfCnpj(String cpfCnpj) {
this.cpfCnpj = cpfCnpj;
}
}