Pegar valor clicado no <h:selectOneRadio no método

1 resposta
marlonmca

opa pessoal,
eu to tentando colocar um radio em uma grid e chamar um método que atualiza a linha clicada no banco. O problema é que se os dois radios estiverem desmarcados eu não sei quem alterar no método. Tentei usar o binding, mas não adiantou pq o value tem que ser de acordo com a linha da grid. Alguém sabe como pegar o valor do radio clicado pelo usuário?

<h:selectOneRadio  
	id="presidenteRadio" 
        value="#{(row.presidente || row.vicePresidente) ? row.presidente : null}">
	<f:selectItem id="presidente" itemLabel="Presidente2" itemValue="true" />
	<f:selectItem id="vice" itemLabel="Vice-Presidente56" itemValue="false" />
	<a:support event="onchange" action="#{home.atualizaPresidente(row)}" />
</h:selectOneRadio>

1 Resposta

marlonmca

Achei a solução:

<h:selectOneRadio id="presidenteRadio" valueChangeListener="#{home.atualizaPresidente}" immediate="true" 
                            value="#{row.idSessaoComposicaoOrdem}-#{(row.presidente || row.vicePresidente) ? row.presidente : null}" >
    <f:selectItem id="presidente" itemLabel="Presidente" itemValue="#{row.idSessaoComposicaoOrdem}-true" />
    <f:selectItem id="vice" itemLabel="Vice-Presidente" itemValue="#{row.idSessaoComposicaoOrdem}-false" />
													
       <a:support event="onchange" reRender="presidenteRadio"/>
</h:selectOneRadio>
public void atualizaPresidente( ValueChangeEvent event ){
  HtmlSelectOneRadio radio = (HtmlSelectOneRadio)event.getComponent();  
  String string = (String)radio.getValue();
  int posT = string.indexOf('-');
  Boolean valor = Boolean.valueOf(string.substring(posT+1, string.length()));
  Integer id = Integer.valueOf(string.substring(0, posT));
...
}
Criado 30 de dezembro de 2010
Ultima resposta 31 de dez. de 2010
Respostas 1
Participantes 1