JSF - <h:commandButton nem sequer chama método que está no action ao ser pressionado
20 respostas
N
neeryck
Olá Srs.
Em cada linha da minha dataTable tenho um botão a qual deletará a respectiva linha. Pois bem, o fato é que quando o botão é pressionado NÃO CHAMA O MÉTODO DE DELEÇÃO. Tenho outra página que é identica a essa (exceto por uns hiddens a mais para serem usados nos request’s) e ela funciona perfeitamente… inclusive é de praxe eu utilizar o seguinte trecho de código para executar deleções dentro de uma dataTable:
Sim, estão dentro de um <h:form. Mas aproveitando que disse isso, quais os problemas que a ausência do mesmo pode causar?? Ainda não conheço muito de JSF…
[]'s>
H
henriquejhc
Posso estar enganado, mas acho que deveria ser assim:
Ele vai para a mesma página através da String do action “goDeleteView” (é um refresh) só que a dataTable vazia, tendo em vista que o método não é executado!!
Poxa vida… será um bug do jsf?
[]'s
I
ivesbertoli
Mais um detalhe… ele está seguindo a estrutura abaixo né ?
Por que não tenta postar o código inteiro da página ou pelo menos um pouco mais?
Podem ser vários problemas, desde uma incompatibilidade de um simples h:form, f:view, por causa de id, pela quantidade ou por ausência de algum deles (respondendo sua pergunta: sem o h:form não há como submeter os dados). Também pode ser uma declaração de taglib faltando.
Assim como você tentou com “t:”, pode tentar assim:
Onde o table é o nome do binding da tabela e o listagem é o valor do value da sua tabela.
Espero ter ajudado
N
neeryck
mrbbm:
Por que não tenta postar o código inteiro da página ou pelo menos um pouco mais?
Podem ser vários problemas, desde uma incompatibilidade de um simples h:form, f:view, por causa de id, pela quantidade ou por ausência de algum deles (respondendo sua pergunta: sem o h:form não há como submeter os dados). Também pode ser uma declaração de taglib faltando.
Assim como você tentou com “t:”, pode tentar assim:
Tentei assim tb…mas sem sucesso!
Posto o código sim, sem problemas…mas antes… será que é erro de :
“desde uma incompatibilidade de um simples h:form, f:view, por causa de id, pela quantidade ou por ausência de algum deles”
Pq se fosse isso, mt provavelmente não funcionaria com o escopo na session tb não é?
Pq se eu apenas mudar o escopo para session FUNCIONA…só que NÃO ROLA escopo de bean na session aqui na empresa!!
Ouvi dizer que JSF tem bug’s desse estilo. Imaginem que se eu tirar o botão de dentro da dataTable e INGESSAR um id para teste ele tb chama o método.
Engraçado não?
[]'s
B
brunno.orpinelli
Tente colocar um submit javascript no evento de onclick:
Outra coisa… eu já tive EXATAMENTE esse problema, por que o cliente estava usando o internet explorer 6, e eu havia testado a tela no internet explorer 7.
N
neeryck
Srs.
Chutei o balde e coloquei o escopo do bean na session!! Se alguém eventualmente teve uma experiência assim e quizer ajudar…posta aí!!
[]'s
L
lgweb
Cara vc ta usando um metodo :
public void excluirAreaDeVenda(ActionEvent evt) { }
para estes tipos de metodo deve se usar actionListener=#{seuBean.metodo} e naum action=#{seuBean.metodo}
Caso queira usar action tem que ser um metodo que retorne uma String tipo:
public String excluirAreaDeVenda() {
//faz alguma coisa
return “”;
}
L
Lucas_Sorrentino
Tenta colocar a anotação @KeepAlive na sua classe…
V
vinicius_maximiano
Cara, usa o keep alive, assim o bean “sobrevive” além do request, mas não precisa alterar o escopo.
J
joaopaulolobo
Pessoal… Estou com o mesmo erro. <h:commandButton nem sequer chama método que está no action ao ser pressionado" >
Cara eu passei por esse problema. Resolvi do seguinte jeito:
Primeiro tenha certeza se é um erro de validation:
coloque na sua pagina a seguinte tag:
<h:messages/>
se for erro de validacao: faça o seguinte, use converter para suas combos(selectOneMenu), e importante, seus Objetos que vao nas combos devem ter hashcode e equals para que passem na Validation Phase.
Esse erro ocorre porque o tipo de dado que vem da pagina é diferente do esperado no backing bean.
E se for esse o caso, acaba que nao chama o action do seu form.
Espero ter ajudado.
M
MaikoID
não vou conseguir ver se era isso mesmo porque eu resolvi atualizando as lib, de tudo que eu usava.