Estive dando uma olhada neste post:
http://www.guj.com.br/posts/preList/119632/659884.java
Entendi a parte de carregamento dos dados para a página, mas na submissão do formulário, como recuperar o item selecionado no ManagedBean?
Eu criei um atributo do tipo HtmlSelectOneListbox e na página jsp coloquei-o no atributo binding do SelectOneListbox.
Selecionei um item e fiz uma depuração, interrompendo o código nesta linha:
Object objeto = selectOne.getSubmitedValue();
Para ver o que esse método retorna. Mas só vem nulo, não importa qual item eu selecione.
Qual a melhor maneira de capturar o item selecionado, neste caso?
repare nesta linha:
# <h:selectOneMenu id="id_cidade" value="#{clienteManagedBean.cidade}" >
o comando value="#{clienteManagedBean.cidade}" faz o binding automatico do combo para a propriedade cidade do seu MB, portanto, basta ir na classe do MB e utilizar o metodo getCidade() da classe
Não funcionou.
Eu tenho um combobox criado com este código:
<tr><td>
<f:verbatim>Tipo</f:verbatim>
</td><td>
<h:selectOneListbox value="#{ProdutoMB.produto.tipo.tipo_id}">
<f:selectItems value="#{ProdutoMB.tipos}"/>
</h:selectOneListbox>
</td></tr>
Eu consigo carregar um registro existente, e o combo traz o tipo selecionado corretamente. Mas se eu seleciono outro tipo, ele não atualiza o atributo do ManagedBean. Quando eu vou depurar, continua com o mesmo valor, e não com o que eu selecionei. No ManagedBean eu faço isto:
public String gravar()
{
if (produto.getProduto_id()==0)
{
produto.setProduto_id((int)Math.abs(10*Math.random()));
}
produto.setTipo(tipoDao.find(produto.getTipo().getTipo_Id()));
produtoDao.save(produto);
return null;
}
Só que o getTipo_Id() retorna o id do registro atual e não do novo que eu selecionei no combo.
Existe outra forma de capturar o item selecionado no SelectOneListbox?