[RESOLVIDO] - Habilitar e desabilitar um botao em JSF
16 respostas
jean.ufam
Pessoal,
num outro post, estava com problemas no meu p:dataTable, onde eu queria fzer um update e delete, somente quando o radiobox fosse clicado. Nao consegui. Porém eu tive uma outra ideia. Pesquisei + nao obtive uma resposta clara.
Agora a ideia é outra, eu quero desabilitar o botao de Alterar e Deletar, e somente serão habilitados uma vez que for selecionado o radiobox.
Sei que da pra fazer isso em javascript. Só que eu numca usei isso com JSF.
Poderá usar ajax, se for JSF 2 é nativo, senão terá que usar algo que implemente (como Richfaces). Crie atributos boolean em sua classe e em seus botões na página sete o atributo disabled com os atributos booleanos da classe. Quando seu bean for chamado, inialize os valores com true e os botões estarão desabilitados. Crie um método que o ajax irá chamar quando um radio for selecionado e faça a lógica de quiando se deve habilitar os botões.
Uma alternativa ao Ajax é utilizar valuChangeListener, só que para habilitar ou desabilitar os botões, a página inteira será atualizada.
kritiuns
Brow … uma ideia … é vc ter variaveis de controle
abilitarEditar retorna um boolean
abilitarExcluir retorna um boolean
Poderá usar ajax, se for JSF 2 é nativo, senão terá que usar algo que implemente (como Richfaces). Crie atributos boolean em sua classe e em seus botões na página sete o atributo disabled com os atributos booleanos da classe. Quando seu bean for chamado, inialize os valores com true e os botões estarão desabilitados. Crie um método que o ajax irá chamar quando um radio for selecionado e faça a lógica de quiando se deve habilitar os botões.
Uma alternativa ao Ajax é utilizar valuChangeListener, só que para habilitar ou desabilitar os botões, a página inteira será atualizada.
Fala mano, BOM DIA.
Mas é possivel entao fazer com javascript, digo, seria bem mais eficiente e eficaz … ???
Na verdade estou procurando uma solução, seja ajax, ou javascript. Potanto que eu faça … para mim ta valenduuu >>>
Tiburcio_Mancha
Nem precisa mecher em código JS, se for JSF 2 que está usando, o ajax é nativo, só vocÊ pesquisar que é facinho implementar. Caso contrário, pode ser feito utilizando Richfaces, ae ja tem que ser realizada uma confiiguração, etc, é um trmpo a mais mas nada excepcional.
Uma solução para o seu problema, só que menos adequada, é quando o usuário clicar em algum botão sem selecionar o radio, disparar uma mensagem de validação, mas ainda prefiro o esquema dos botões!
jean.ufam
Tiburcio_Mancha:
Nem precisa mecher em código JS, se for JSF 2 que está usando, o ajax é nativo, só vocÊ pesquisar que é facinho implementar. Caso contrário, pode ser feito utilizando Richfaces, ae ja tem que ser realizada uma confiiguração, etc, é um trmpo a mais mas nada excepcional.
Uma solução para o seu problema, só que menos adequada, é quando o usuário clicar em algum botão sem selecionar o radio, disparar uma mensagem de validação, mas ainda prefiro o esquema dos botões!
Poise, esse ae eu abandonei a ideia, pois nao encontrei nda parecido. Eu tow utilizando o Primefaces,
sendo que flagEditar é a variavel que contem o boolean essa variavel vai estar no seu bean …
vc vai criar o método abilitarEditar que vai setar a variavel flagEditar para o seu bean.
e esse método vai ser chamado na hora q o botão tem q ser abilitado.
por um cara assim
sendo que flagEditar é a variavel que contem o boolean essa variavel vai estar no seu bean …
vc vai criar o método abilitarEditar que vai setar a variavel flagEditar para o seu bean.
e esse método vai ser chamado na hora q o botão tem q ser abilitado.
por um cara assim
Não funciona nao, mais eu encontrei, talvez uma solução rapida !!!
<h:head><title>MenuOuvidoria</title><linktype="text/css"rel="stylesheet"rel='nofollow'href="redmond/theme.css"/><scripttype="text/javascript">functionenable(button){document.getElementById(button).disabled=false;}functionButtonOff(){varv=document.getElementById(radio);for(vari=0;i<v.length;i++){if(v[i].checked){enable(button);}}}</script></h:head><h:body><!-- Barra de GRID --><h:formid="formCategorias"prependId="false">........<p:columnselectionMode="single"id="radio"/><f:facetname="footer"><p:commandButtonvalue="Alterar"image="ui-icon-search"update="formAlterar"oncomplete="alterar.show()"id="update"disabled="true"onchange="ButtonOff()"/><p:commandButtonvalue="Remover"image="ui-icon-trash"update="formRemover"oncomplete="remover.show()"id="remover"disabled="true"onchange="ButtonOff()"/><p:commandButtonvalue="Movimentação"image="ui-icon-circle-check"action="movimenta"id="moving"/></f:facet></p:dataTable></h:form>...
An Error Occurred:
Error Parsing /index.xhtml: Error Traced[line: 16] The content of elements must consist of well-formed character data or markup.
o erro vai cair no ,
Pessoal, o que está ERRADO??? E o que fazer pra funcionar ???
Sei que o erro é besta, porem nao estou conseguindo visualizar >>> ???
alguem pode ajudar ???
kritiuns
Se tiver exatamente do jeito que vc coloco ai … o getElementById recebe uma string …
tem q ser getElementById(“radio”) e para todos os outros casos que vc usa esse método .
jean.ufam
kritiuns:
Se tiver exatamente do jeito que vc coloco ai … o getElementById recebe uma string …
tem q ser getElementById(“radio”) e para todos os outros casos que vc usa esse método .
Engraçado, porque eu já coloquei com “” e se " " … e continua o mesmo ERRO !!!
poise, essa é uma das minhas duvidas, pois na documentação do PRIME ele mostra isso ae e ele rendera como um RADIO. Agora axo que ae tá o problema OHHH
porque ele nao poem um radio... msmo.....
jean.ufam
Axo que vou ter que trocar a forma pra Habilitar, Desabilitar o meu botao. Vou dar uma estudada em uma outra solução.
Mas pessoal eu ja entendi, o que foi dito por todos.
Muito obrigado.
Vou encerrar o post e se precisar eu abro um novo.