Dúvida - reRender ao digitar em inputText

11 respostas
G

Boa tarde,

tenho uma dúvida de iniciante, porém não consegui encontrar a maneira de resolvê-la aqui no fórum.

Tenho 4 campos inputText, porém gostaria que acontecesse assim. Apenas o primeiro ficasse visível, e os outros 3 renderizam apenas se tiver algo escrito no primeiro inputText.

No exemplo abaixo, apenas faz sentido ter os campos “Curso, Sala e Turma”, caso o usuário esteja em alguma “Faculdade”.
Portanto, como fazer para que os últimos 3 campos apenas apareçam caso exista algo digitado no primeiro ?

Pensei em utilizar o a4j:support, com event=“onchange” . Se ele digitar alguma letra os campos serão renderizados, porém se ele apagar todo o campo, os outros continuarão renderizados, e gostaria que sumissem.

Grato

<h:outputText value="Faculdade">
<h:inputText value="#{meuBean.faculdade}">

<h:outputText value="curso">
<h:inputText value="#{meuBean.curso}">

<h:outputText value="sala">
<h:inputText value="#{meuBean.sala}">

<h:outputText value="turma">
<h:inputText value="#{meuBean.turma}">

11 Respostas

rdgms

JSF: so acrescentar reRender = false;
ou
JS: document.getElementById('id').style.display = 'block' ou 'none'

G

Utilizo JSF, mas não entendi sobre “acrescentar reRender = false;”

reRender não deve vir acompanhado pelo id do campo / panelgroup que desejo reRenderizar ?

rdgms

opss estou tão acostumado a usar o richfaces com o jsf que confundi… errei reRender false so com richfaces…kkk

G

Também possuo richfaces aqui.
Será que poderia me explicar um pouco melhor como utilizar neste caso ?

Não sei o quão claro fui, mas é isso:

O campo 1 está vazio, e só ele aparece na tela.
Caso algo seja digitado nele, os outros 3 campos aparecem.
Se o campo 1 tiver os dados apagados, os outros 3 campos somem novamente.

Grato

rdgms

Cara acho isso muita pouca coisa para fazer com reRender, olha o reRender você faria assim:

No seu caso você add um biding das suas texts e deixa apenas a primeira com rendered = true o resto false aih você faz alguma logica para ir para o managedbean no managed bean você cria uma logica para dar um rendered =true nas outras texts…
ahh você deve na sua primeira text o reRender para as suas texts!!!

Faça isso com JS puro no onclick da primeira texts você faz uma logica usando o codigo que eu coloquei no primeiro post.

G

Ok, já estou quase conseguindo de outra maneira aqui.

O problema é que, se utilizo pra reRender o campo, nada acontece. Porém se utilizo para reRender o PANELGROUP, funciona !

Acontece que, utilizando onkeyup, assim que digito o 1º número, o campo perde focus.
E se utilizo onchange, ao digitar todo o número, nada acontece, a não ser que dê um clique fora do campo…

rdgms

Legal… qualquer coisa posta aih! kkk

vitenho

cara a GRANDE PEGADINHA DO RERENDER ta aki:

http://jboss.org/file-access/default/members/jbossrichfaces/freezone/docs/devguide/en/html/ArchitectureOverview.html

leia a parte 5.5.1. Re-Rendering

quer dizer q se vc coloca compnt1 com rendered = false, e algum outro componente vai reRender esse compnt1 ele nao vai rerender pq ele nem sequer existiu na tree do jsf!!!

por isso que tem q por um container em volta ( panelgrid ou panelgroup)

e reRender=“idDoContainer”
valeu

rdgms

Eae cara, não se der um biding nos texts…

vitenho

eu tenho pavor de bindings
duplicate ids e merdas relacionadas eheheheh

rdgms

hauhAUhauAhuAHUAHuahuaHUAH
sei da merda que você esta falando… kkk

Criado 29 de julho de 2009
Ultima resposta 29 de jul. de 2009
Respostas 11
Participantes 3