Olá,
Considerem o código abaixo:
<f:view>
<h:form>
<h:outputText value="#{enqueteBean.enqueteAtual}"/>
<h:selectOneRadio styleClass="textoenquete" layout="pageDirection" value="#{opcaoBean.id}" required="true">
<f:selectItems value="#{enqueteBean.opcoesAsItems}"/>
</h:selectOneRadio>
<center>
<h:commandButton action="#{opcaoBean.votar}" styleClass="botao" value="Votar"/>
<h:commandButton action='resultados' styleClass="botao" value=" Resultados "/>
</center>
<h:messages/>
</h:form>
</f:view>
Onde:
- "#{enqueteBean.enqueteAtual}" retorna o título da enquete;
- "#{enqueteBean.opcoesAsItems}"retorna um List < SelectItem>, onde cada selectItem é instanciado com um valor Integer em "value". Este valor deveria ser passado para a propriedade #{opcaoBean.id};
- "#{opcaoBean.votar}" é a action que incrementa o valor de uma opção da enquete em 1;
Ao dar submit no form, JSF retorna uma mensagem de erro:
"Validation Error: value is not valid."
A ação sequer é executada (votar()). Claro, pois JSF sequer passa da fase de validação! Ao ver o código fonte da página, os radio buttons são renderizados corretamente, cada um com um value diferente.
O que há de errado com esse código? Já tô ficando louco! :shock:
Abraço!
Rodrigo