Problema fechar dialog, depois de ter tentado inserir um campo vazio não permitido

Olá galera, estou com um problema muito estranho…

tenho um dataTable populado com os usuários, com um botao “Detalhes” que aciona um dialog com os campos para poder alterar os dados do usuário

<p:commandLink update=":formAlt" title="Alterar" onclick="dlg_alterar.show()">
	<f:setPropertyActionListener target="#{ctrlManterUsuario.selecionado}" value="#{user}" />
	<h:graphicImage value="/resources/images/edit.png" />
</p:commandLink>

OK. Tenho campos nesse formulário que não podem ser nulos, como Telefone, por exemplo. Ao tentar alterar os dados, deixando um campo nulo não permitido (ou apagando o que tem nele), ele não deixa alterar e dá um aviso. Até ae tudo beleza.
Mas o problema que estou encontrando é que caso eu desista de alterar esses dados, e fechar o dialog, voltando para a minha tela com o dataTable, eu não consigo mais mexer em nenhum outro usuário, já que toda vez que clico no botao ‘Alterar’, ele abre o dialog com os dados do usuário ao qual eu tentei salvar, e o campo que deixei nulo aparece em destaque (vermelho, ou com os dados antigos que apaguei).
Coloquei um botão “Cancelar”, com action para instanciar novamente o objeto (vi no blog do jakefrog http://uaihebert.com/?p=1414), mas também não funcionou

<p:commandButton value="Cancelar" type="button" title="Cancelar" icon="ui-icon-cancel" onclick="dlg_alterar.hide()" actionListener="#{ctrlManterUsuario.resetUser()}"/>

método no Bean

public void resetUser(){
	selecionado = new Usuario();
}

Se alguém tiver uma dica =)
Obrigado!

Abraços

e se vc por um ajax false no cancelar ?

Valeu amigo, mas também não funcionou =/

vc já chego a debugar para ver se na hora que entra no metodo de selecinar está setando o ojeto selecionado.

tive problemas em usar o <f:setPropertyActionListener> uso o

<f:attribute name="seleciona" value="#{obj}"/>

O que vai no ‘name’?
Com isso ele nem seto o objeto pro formulario alterar…
Antes de eu tentar fazer o que eu disse, funciona de boa o <f:setPropertyActionListener>…
Acredito que seja algum problema da validação… tipo, enquanto não preencher aquele campo vazio, ele não some…
bom seria se tivesse algum tipo de comando que pudesse matar esse processo da validação…

pagina:

<p:commandButton style="height: 18px; width: 18px;" actionListener="#{agendaController.seleciona}" update=":modalAgenda" icon="btn_alterar" oncomplete="mAgendamento.show()"> <f:attribute name="selecionaAgendamento" value="#{obj}"/> </p:commandButton>

Mbean:

public void seleciona(ActionEvent acao) { this.agendamentoSelecionado = (UsuarioAgendamento) acao.getComponent().getAttributes().get("selecionaAgendamento"); }

o import é import javax.faces.event.ActionEvent;

apos trabalho com ela no MB.

Achei até interessante vc fala que nao fecha depois da msg de invalido no teu proj. pq to com um problema inverso. quero que quando ele de a msg ele nao feche o dialog… mas sempre ta fechando.

hummm… vou tentar depois dessa maneira que citou, valeu! =D

Então, para não fechar o dialog um camarada me ensinou de duas maneiras, de uma olhada:
http://www.guj.com.br/java/251190-primefaces-fechar-pdialog-com-if#1488181

Estou usando da segunda forma, e tem funcionado bem pra mim… tenta, e qualquer coisa da um toque

Aqui tem um exemplo de como fazer: Aplicação Web Completa Tomcat JSF Primefaces JPA Hibernate

Pois é… eu segui esse seu exemplo, inclusive citei ele no tópico heheheh
mas não sei o que estou fazendo de errado… no seu exemplo que baixei inclusive, funciona o que está dando errado pra mim (=
As unicas coisas que não fiz foi a Classe util, a abstrata do mb… e os facade, mas de resto está bem parecido

[quote=pcsantana]Pois é… eu segui esse seu exemplo, inclusive citei ele no tópico heheheh
mas não sei o que estou fazendo de errado… no seu exemplo que baixei inclusive, funciona o que está dando errado pra mim (=
As unicas coisas que não fiz foi a Classe util, a abstrata do mb… e os facade, mas de resto está bem parecido[/quote]I cara, foi mal. Tinha visto não.
E pior, eu li errado. Mahuah Que feio. :oops:

Vamos lá. Você conferiu se o método de reset está sendo chamado? Se sim, blz.

Antes de abrir o dialog, dê update no form do dialog. Veja c funciona.

heheheh, da nada! =)

mas que beleeeza ein… eu ia responder que já tinha rodado o debug, e tinha visto que entrava no método reset… mas quis testar mais uma vez antes de falar aqui e adivinha?
não está entrando… acho que de tanto eu mexer…

achei simplesmente delicioso esse if… no oncomplite me economizara varias variaveis no MB… existe alguma contra indicação ?

e usar de outrar maneira. exemplo JS do exemplo do primefaces…

cara esses dias estava com um problema assim… resolvi como… coloquei ajax false no evento de alterar… ele retornou um erro falando que estava faltando por um SET a um atributo no meu bean… e que ele nao estava editavel “writeable”

verifica se está faltando algum metodo “SET” em alguma variavel dentro do metodo alterar que esta tentando chamar kkkk

hahaha, acabo de descobrir um erro maaaaais estranho ainda…
se faço alterações no form, mas por algum motivo elas não são concluídas (como validação do cpf), e clico em cancelar pra fechar o dialog… os dados são alterados no dataTable! oO
Aparece os dados que tentei inserir no dataTable, mas não são alterados no banco… se dou um atualizar na página, ae pega os valores certos (vindo do banco)!!

Alguém tem uma idéia do que pode ser??

vc chegou a tentar com o

<f:attribute name="seleciona" value="#{obj}"/>  

sei la… as veses é coisa do [/code]<f:setPropertyActionListener target="#{ctrlManterUsuario.selecionado}" value="#{user}" /> [code]

no meu nao ocorre isto acabei de testar pra te falar…

as veses o setPropertyActionListener vincula com o datatable…

suposição kkkkk

tentei… consegui usar o que me passou otOtavio, mas o problema continua… fico doido com essas coisas! hahah

no seu, vc tem um form só para o model?