Exibir campos com JSF

5 respostas
furutani

Olá

Existe alguma forma de fazer com que campo input text seja exibido/escondido conforme clicamos no checkbox sem fazer submit da página?

<h:form>
   <h:panelGrid columns="2">
      <h:outputText value="Habilita Campo:" />
      <h:selectBooleanCheckbox value="#{HabDesMB.campoHabilitado}" 
          valueChangeListener="#{HabDesMB.teste1}" > 
          <a4j:support  action="#{HabDesMB.mostarCampo}" event="onclick" reRender="texto" />                     
      </h:selectBooleanCheckbox>

      <h:inputText id="texto" 
        rendered="#{HabDesMB.campoHabilitado}" 
        value="#{HabDesMB.dadoTexto}"
        binding="#{HabDesMB.textoTeste}"
      >
      </h:inputText>
   </h:panelGrid>
  </h:form>

Usei o <a4j:support> mas não como fazer para exibir ou esconder o input text.

5 Respostas

P

Viva furutani,

no a4j:support vc executa uma action. O que é que ela faz?

Além disso vc executa tb um valueChangeListener que não dá para perceber bem o que faz.

Pode explicar melhor?

fabio.massa

Fala furutani blz?
Acho que consegui fazer o que você queria, você estava quase conseguindo…tive que fazer um “ajuste fino” para funcionar :lol:

&lt;h:form id="meuForm"&gt;
  &lt;h:outputText value="Habilita Campo: " /&gt; 
  &lt;h:selectBooleanCheckbox value="#{meuBean.meuCheckbox}"&gt;
    &lt;a4j:support event="onclick" ajaxSingle="true" reRender="meuForm" /&gt;
  &lt;/h:selectBooleanCheckbox&gt;
			
  &lt;h:inputText id="meuCampo" rendered="#{meuBean.meuCheckbox}"/&gt;
			
&lt;/h:form&gt;

A gambi no caso foi ter que mandar renderizar o form inteiro, não sei porque pedindo para renderizar só o meu inputText não rolou…e nesse caso o event funciona tanto com onclick ou onchange.
Espero ter ajudado, boa sorte!
Abraços,

furutani

Olá

Consegui fazer de uma forma diferente usando o

<h:form>
   <h:panelGrid columns="2">
      <h:outputText value="Habilita Campo:" />
      <h:selectBooleanCheckbox value="#{HabDesMB.paginaHabilitada}" 
          valueChangeListener="#{HabDesMB.teste1}" 
          id="chbHabilita"> 
          <a4j:support action="#{HabDesMB.teste}" event="onchange" id="ajxHabilita" ajaxSingle="true" reRender="panel"/>                     
      </h:selectBooleanCheckbox>
      
   </h:panelGrid>
	<a4j:outputPanel id="panel" ajaxRendered="#{HabDesMB.paginaHabilitada}" layout="none" rendered="true">
      <h:inputText id="textoTeste" 
        value="#{HabDesMB.dadoTexto}"
        binding="#{HabDesMB.textoTeste}">
        </h:inputText>
	</a4j:outputPanel>
  </h:form>

Muito obrigado!

fabio.massa

Boa cara, muito bom mesmo!
Você faz alguma coisa com o valueChangeListener do seu checkBox?, se for só pra renderizar o campo acho que você não precisa desse método.
Essa sua dúvida foi boa cara, amanhã vou alterar algumas coisas no nosso sistema hehehe, até antes de ler esse post eu não pensava em fazer isso :lol:
Abraços,

furutani

Olá

Eu não faço nada no valueChangeListener, ele está por que eu estava tentando de tudo quanto é jeito fazer esse esconde/aparece funcionar hehehe.

Obrigado novamente.

Criado 12 de fevereiro de 2009
Ultima resposta 12 de fev. de 2009
Respostas 5
Participantes 3