Bom dia,
preciso inserir em minha página um combobox no qual haverá apenas dois itens, ou seja, não irei buscar essas informações de lugar algum, vou criar manualmente.
Em HTML sei que existe a tag e, na página que estou alterando utilizamos o h:selectOneMenu
A dinâmica é a seguinte: o usuário seleciona os dados do pedido (vários são estão em selectOneMenu) e depois clica em avançar. Abaixo vai uma imagem de como é a página. Todos os comboboxes da página (exceto o selecionado em vermelho) são selectOneMenu.
Pelo que eu entendi (me corrijam se eu estiver errado), o próprio selectOneMenu já faz o set dos dados. Mas para usar o selectOneMenu preciso passar pra ele uma lista de objetos e dizer qual é a propriedade que quero passar como label.
Já no eu não sei se é possível eu fazer o mesmo, disparando o meu set
O que devo fazer?
Em resumo preciso de um combobox no qual vou definir os itens de forma fixa e, após o usuário selecionar, preciso chamar um método set que receberá uma String.
Se entedi direito você quer processar uma ação quando o usuário selecionar algum option no select, se for isso você pode fazer utilizar a propriedate do select onChenge, que tem por base efetuar uma ação quando o usuário seleciona algum option no select.
<select onChange="nomedafuncao($this)">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<script>
function nomedafuncao(obj){
alert("Valor selecionado: "+obj.value);
//Aqui você chama um ajax ou coisa do tipo
}
</script>
Qualquer coisa posta ai.
Olá febeckers.
Obrigado pela ajuda.
É exatamente o que disse: ao selecionar um item eu preciso dar um set para registrar isso.
Sou leigo em desenvolvimento Web e tô penando nisso.
Esse script deve ser colocado dentro da tag certo?
Outra coisa: o alert deveria me dar um aviso no browser? Porque se for, não deu certo
Poderia me ajudar nessa parte de Ajax? Eu só preciso chamar o seguinte método: infoPedido.setTipoComissao(String)
Obrigado!
<script>
function nomedafuncao(obj){
alert("Valor selecionado: "+obj.value);
//Aqui você chama um ajax ou coisa do tipo
}
</script>
<select onChange="nomedafuncao(this)">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
Desculpe, agora funciona.
Sobre o Ajax eu tenho um post no meu site que mostra como deve ser feito utilizando Jquery: http://www.fernandobecker.com.br/tutoriais-17/ajax-via-post.html
Amigo, você pode utilizar o proprio selectOneMenu para isso, da uma testada no codigo abaixo
<h:selectOneMenu value="#{MBean.selecionado}">
<f:selectItem itemLabel="Descrição" itemValue="Valor"/>
<f:selectItem itemLabel="Descrição 2" itemValue="Valor 2"/>
</h:selectOneMennu>
O conteúdo da itemLabel é o que será mostrado para o usuário selecionar, o conteúdo do itemValue será armazenado em MBean.selecionado.
Desa forma você não precisa de métodos adicionais para pegar o valor do componente, apenas os gets e sets para a propriedade MBean.selecionado.
Abraços
Febeckers e gilvan.sfilho muito obrigado pela ajuda!
Consegui resolver utilizando o selectOneMenu como na dica do gilvan.sfilho
Agradeço aos dois pela ajuda.