Utilizandp <a4j:actionparam/> para capturar o valor de um selectOneRadio [RESOLVIDO]

9 respostas
C

Olá pessoal…tudo bom?

O negócio é o seguinte: na interface do meu sistema tem um selectOneRadio com duas opçoes (SIM e NÃO). Quero que criar uma rotina no meu bean para quando
o usuário clicar na opção SIM, um outro campo chamado Area Combatida tem que ficar escondido, ou seja, rendered=“false”. Mas se o usuario clicar na opção NÃO, o campo Area Combatida não pode ficar escondido, ou seja rendered=“true”. certo?
Tentei usar a opção a4j:actionparam/ mas não esta dando certo.
Abaixo tem o código:

Pagina (JSF)

<h:outputText id="otReservaAceiro" value="#{msgf.reserva}: "/>
					<h:selectOneRadio id="combReservaAceiro" value="#{forCombateBean.combate.reserva}"> 
						<f:selectItem itemLabel="Sim" itemValue="Sim">
							<a4j:actionparam name="valor" value="sim" />
						</f:selectItem>
					    <f:selectItem itemLabel="Não" itemValue="Nao">
					    	<a4j:actionparam name="valor" value="nao" />
					    </f:selectItem>
					    <a4j:support reRender="otAreaCombate, combAreaCombate, rendmsg" ajaxSingle="true" event="onchange" action="#{forCombateBean.supportNao}" ></a4j:support>
					</h:selectOneRadio>	
					<rich:message ajaxRendered="true" for="combReservaAceiro"
						showDetail="false" showSummary="true" styleClass="Erro">
						<f:facet name="errorMarker">
							<h:graphicImage value="/imagens/error.gif" />
						</f:facet>
					</rich:message>

Meu bean

public void supportNao(){
	 String valor = (FacesContext.getCurrentInstance()
			.getExternalContext().getRequestParameterMap().get("valor"));
	 if (valor.equals("sim")){
	     exibirArea = true;
	 }else{
	     exibirArea = false;
	 }
	
    }

alguém tem uma idéia do que eu devo fazer?
valeuuu!!

9 Respostas

hudson.negao

no campo rendered do input Area Combatida você coloca algo assim

rendered="#{seuMB.seuAtributoBoolean}"
C

cara, você está dizendo algo assim?

<h:outputText id="otAreaCombate" rendered="#{forCombateBean.exibirArea}" value="#{msgf.area_comb}:" />

já está assim…mas ainda não está dando certo!

hudson.negao

tente trocar o event do teu a4j:support de onchange para onclick, e teste em modo debug para ver se sua action está sendo chamada corretamente.

C

cara, pelo que eu to entendendo, a String valor ta recebendo null

não deu certo usando onclick também não!

hudson.negao
#{forCombateBean.combate.reserva}

   public void supportNao(){  
       ##########  String valor = this.getCombate().getReserva();
         if (valor.equals("sim")){  
             exibirArea = true;  
         }else{  
             exibirArea = false;  
         }  
          
       }

teste isso

C

cara, deste modo está sumindo com o campo “area combatida” tanto para SIM quanto para NAO!

hudson.negao

troque o “sim” por “Sim”.
Retire os a4j:param de dentro dos itens do teu radio.

C

cara, deu certo agora…ficou muito bom!!
valeu pela ajuda…

agora, eu tenho um outro campo chamado “Operação de combate” que é um lista para o usuario selecionar a opção desejada. Essa lista apresente duas opções: localizado e sistematico

quando eu coloco a opção SIM, a lista só deveria apresentar a opção localizado. Já quando eu coloco a opção NÃO, a lista deve apresentar as opções localizado e sistemático.
como eu poderia estar fazendo isso?

hudson.negao

brincando com o rendered. ali dentro mesmo daqueles ifs anteriores e criando dois atributos boolean talvez um pra cada opção??
é só uma idéia.

Criado 2 de dezembro de 2010
Ultima resposta 2 de dez. de 2010
Respostas 9
Participantes 2