RESOLVIDO --- JSF + JQuery

Boa tarde amigos GUJeiros

Gostaria de saber se tem como eu fazer uma chamada de uma função do javascript ou do JQuery dentro da propriedade ‘rendered’ do JSF
exemplo

<h:selectBooleanCheckbox value="#{serieEcfBean.habilitaPedidoDeVenda}" id="pedVenda"rendered="exibir()"/>
<h:outputLabel styleClass="formNew" value="Habilita ped.venda" for="pedVenda"	rendered="exibir()"/>

onde exibir() é minhq função do JS e ela retorna TRUE ou FALSE justo para renderizar ou nao.

Mas não funciona.

Agradeço qualquer ajuda.

O rendered é um atributo resolvido no lado do servidor, logo você não pode usar javascript nele.

Mas os controles HTML gerados pelo JSF podem ser acessados normalmente pelo JQuery através do id, o que pode ocorrer é que se você atribuiu um id ao h:form, o id no HTML fica assim - id_do_form:id_do_componente.

Sei disso, mas como eu faria para ele exibir somente quando eu tiver um retorno true?
tenho uma var global que recebe true ou false, dependendo da versao do soft que o usuario digitar, se for 14 ou maior ele mostra alguns checkbox para montar um xml, caso contrario não mostra os cheks e o xml é gerado de outra forma.

So falta renderizar esses campos qnd a versão for 14 ou maior…

de forma bem simplificada, você poderia fazer no javascript:

if(exibir()) $("#pedVenda").hide(); else $("#pedVenda").show();

isso você pode colocar no evendo onkeyup do campo de versão ou em um onclick de um botão.

[quote=juliofsn]de forma bem simplificada, você poderia fazer no javascript:

if(exibir()) $("#pedVenda").hide(); else $("#pedVenda").show();

isso você pode colocar no evendo onkeyup do campo de versão ou em um onclick de um botão.[/quote]

O problema é que o hide() e o show() ele não retira do codigo, ele simplementes deixa escondido na tela, e como o codigo fonte fica lá
quando for submetido os cheks vao estar como vazios e na bean que gerencia a geração de chaves e xml vai receber esses valores vazios e vai interpretalos e coloca-los no xml.

então você vai ter que fazer essa validação no servidor, pelo javascript você não tem como evitar que o componente seja renderizado na página, já que ele só vai ser executado depois.

Cara muito obrigado pelaq ajuda. consegui resolver meu problema de uma maneira muito simples.

<h:inputText id="versaoSOFT" value="#{serieEcfBean.serieEcf.versao}" onchange="submit()" disabled="#{serieEcfBean.deleteState}" styleClass="formNew" size="4"> <rich:jQuery query="mask('99.99')" selector="#versaoSOFT" timing="onload"/> </h:inputText>

coloquei o onchange=“submit()” e ele submete e faz o set da propriedade no managedBean.

e na minha bean tenho um metod isBlablabla, que retorna boolean, para estado de inserção e atualição, e ele permitia renderizar minhas checkbox para as versões do tipo 14.
Mas quando eu tinha uma versão 13 ou menor e queria mudar para a 14 os checkbox não apareciam, entao consegui resolver meu problema somente colocando o onchange=“submit()”

:stuck_out_tongue: