Boa tarde Pessoal!
Eu estou com um problema estranho faz um tempo já e não consegui resolver ainda… não entendi pq ocorre…
Minha estrutura é a seguinte:
Primeira tela:
. Lista os dados de uma tabela do meu BD
.Tem um link pra edição dos dados da linha selecionada do dataTable (vai pra página de Edição / Inserção)
.Tem um botão pra criar um novo registro (vai pra página de Edição / Inserção)
Segunda tela:
É a tela que eu uso pra inserir (caso na tela anterior tenha sido clicado o botão Novo) e pra editar um registro (caso tenha sido clicado o link editar referente a linha do dataTable)
.Tem um botão Salvar (que salva o objeto)
.Tem um botão cancelar (que simplesmente é um link pra retornar à página anterior)
Funciona assim (ou deveria…):
Quando é clicado o link editar, o objeto todo populado vai pra sessão e aparece todos os dados preenchidos na minha segunda tela para serem alterados… se o botão novo é clicado, um objeto com todos os campos vazios vai pra sessão e a minha segunda tela aparece com os campos vazios para um novo registro ser criado… sem usar validação nenhuma, tudo funciona perfeitamente… se eu clico no editar me vem todos os dados, eu altero e salvo… tudo OK… se clico em inserir tb… tudo funciona…
Agora eu coloquei umas validações (só required=“true”) e aí começou a dar problema… Se eu clico no botão novo, vou pra segunda tela pra criar um novo registro, não preencho algum dos campos requeridos e mando salvar ele me retorna a mesma tela com a mensagem…até aí tudo certo… agora se depois disso, em vez de preencher o campo requerido o qual deu a mensagem eu clicar no Cancelar pra voltar pra primeira tela, volta normalmente, mas a partir daí se eu clicar em editar (de qq linha do meu dataTable), a minha segunda tela aparece mas sem nenhum dado…
Meu managed bean está assim:
[code]private Clientes cliente = new Clientes();
private DataModel clientes;
private GerenciadorClientes gerenciadorClienteManaged;
private String razao = null;
public ClienteManaged(){}
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
public String getRazao() {
return razao;
}
public void setRazao(String razao) {
this.razao = razao;
}
public Clientes getCliente() {
return cliente;
}
public void setCliente(Clientes cliente) {
this.cliente = cliente;
}
public DataModel getClientes() {
ListDataModel ldm = new ListDataModel();
if (razao != null){
ldm.setWrappedData(gerenciadorClienteManaged.listaClientesPorRazao(razao));
//this.setRazao(null);
}else{
ldm.setWrappedData(gerenciadorClienteManaged.getClientes());
}
setClientes(ldm);
return clientes;
}
public void setClientes(DataModel clientes) {
this.clientes = clientes;
}
public GerenciadorClientes getGerenciadorClienteManaged() {
return gerenciadorClienteManaged;
}
public void setGerenciadorClienteManaged(
GerenciadorClientes gerenciadorClienteManaged) {
this.gerenciadorClienteManaged = gerenciadorClienteManaged;
}
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
public String salvarOuAlterarCliente(){
gerenciadorClienteManaged.salvarOuAlterarCliente(cliente);
clientes.setWrappedData(gerenciadorClienteManaged.getClientes());
this.setCliente(new Clientes());
return "sucessoSalvarAlterar";
}
public String editar() {
cliente = (Clientes) clientes.getRowData();
return "sucessoEditar";
}
public String novoCliente() {
this.setCliente(new Clientes());
return "sucessoNovo";
}[/code]
Já criei um método cancelar() somente pra me retornar para a página anterior (com o immediate=“true”) e não deu certo tb…
Se eu não coloco as validações funciona como eu espero…
Alguém sabe aonde eu posso estar errando ?? Eu tentei ser o mais claro possível…
Já tentei colocar o meu botão cancelar em outro h:form mas não funcionou tb…
Meu scopo está como session…
Muito Obrigado
Douglas Grava[/code]