Ajuda em ocultar ou mostrar componente

2 respostas
W

Olá, sou iniciante com JSF 1.2 e richfaces. Em minha aplicação tenho um selectOnMenu com 3 opções, O que quero é escolher somente uma dessas opções e quando isso acontecer fazer aparecer outro componente em tempo de execução, sem carregar a página. Alguém tem alguma idéia?

2 Respostas

Tiburcio_Mancha

use o a4j do Richfaces para trabalhar com ajax…

ao selecionar o valor no selecOneMenu, o ajax mudará em seu MB a propriedade rendered, do componente que vc quer mostrar, de false para true!

W

Blz... estou usando mas não está dando certo: segue meu exemplo

BEAN

private String mostraComple;

    public void getMostraCampoComplemento(FacesContext context, UIComponent component, Object value){
	String valorConvenio = (String) value;
	if(valorConvenio.equals("Sus")){
	    setMostraComple("mostra");
	}
	setMostraComple("oculta");
    }

PÁGINA

[color=red]Meu Componente de opção: quando escolher a opção Sus deverá aparecer um outro componente[/color]

<h:panelGrid columns="1">
							 		<h:outputText value="Categoria:" />
									<h:selectOneMenu  id="categoria" rendered="true" 
									styleClass="textbox" value="#{agendaCirurgicaController.agendaCirurgica.categoria}"
									required="true" requiredMessage="* Campo (Categoria) é obrigatório" 
									style="color:#FF6600">
										<f:selectItem itemValue="" itemLabel="Selecione.." />
										<f:selectItem itemValue="Sus" itemLabel="Sus" />
										<f:selectItem itemValue="Convenio" itemLabel="Convenio" />
										<f:selectItem itemValue="Particular" itemLabel="Particular" />
										<a4j:support event="onchange" ajaxSingle="true" 
										reRender="panelConvenio" actionListener="#{agendaCirurgicaController.mostraCampoComplemento}" />										
									</h:selectOneMenu>
							 	</h:panelGrid>

[color=red]Esse é o componente que ira aparecer [/color]

<h:panelGrid columns="1" id="panelConvenio">
							 		<h:outputText value="Convênio:" />
							 		<h:inputText id="convenio" value="#{agendaCirurgicaController.agendaCirurgica.convenio}" maxlength="40" required="true" requiredMessage="* Campo (Convênio) é obrigatório" style="width: 200px; color:#FF6600"/>
							 	</h:panelGrid>
							 	
							 	<h:panelGrid columns="1" id="panelConvenio" rendered="#{agendaCirurgicaController.mostraComple == 'mostra'}" >
							 		<h:outputText value="Complemento:" />
									<h:selectOneMenu  id="comple"  valueChangeListener="#{agendaCirurgicaController.mostraCampoComplemento}"
									styleClass="textbox" value="#{agendaCirurgicaController.agendaCirurgica.complemento}"
									style="color:#FF6600" validator="#{agendaCirurgicaController.validaComplemento}">
										<f:selectItem itemValue="" itemLabel="Selecione.." />
										<f:selectItem itemValue="Alta Complexidade" itemLabel="Alta Complexidade" />
										<f:selectItem itemValue="SUS Com Complemento" itemLabel="SUS C/ Complemento" />
										<f:selectItem itemValue="SUS Sem Complemento" itemLabel="SUS S/ Complemento" />
									</h:selectOneMenu>
							 	</h:panelGrid>
Criado 20 de janeiro de 2011
Ultima resposta 20 de jan. de 2011
Respostas 2
Participantes 2