Bom, quero que o usuário possa selecionar um item no componente selectOneMenu e o valor seja atributo logo após ele selecionar, ou seja, sem a necessidade de ter que da um submit no formulário.
Meu código é o seguinte:
<p:panelGrid columns="2" styleClass="semBorda">
<p:selectOneMenu id="selectOneMenuTabela"
converter="entityConverter" value="#{orcamentoMB.selectedTabela}"
effect="fade">
<f:selectItem itemLabel="Selecione uma Tabela" itemValue="" />
<f:selectItems value="#{orcamentoMB.tabelas}" var="tabela"
itemLabel="#{tabela.nome}" itemValue="#{tabela}" />
</p:selectOneMenu>
<p:commandButton value="Pesquisar Itens" process="@this"
actionListener="#{orcamentoMB.carregarItensTabelaSelecionada}" />
</p:panelGrid>
O problema é que ao clicar no botão “Pesquisar Itens” o valor da variável “selectedTabela” ainda é NULO, mesmo ele selecionando algo.
Já pensou em utilizar o AJAX? Não seu caso, não é necessário um commandbuton.
Um artigo pra você da um pesquisada,
Caso tenha alguma dúvida, é só perguntar…
Olá,
Existe algumas maneiras difrentes de fazer a mesma coisa , eu uso o componente ajax do primefaces com um evento chamado change:
<p:selectOneMenu id="selectOneMenuTabela" converter="entityConverter" value="#{orcamentoMB.selectedTabela}" effect="fade">
<f:selectItem itemLabel="Selecione uma Tabela" itemValue="" />
<f:selectItems value="#{orcamentoMB.tabelas}" var="tabela" itemLabel="#{tabela.nome}" itemValue="#{tabela}" />
<p:ajax event="change" update="idComponenteParaUpdate" process="@this" listener="#{orcamentoMB.carregarItensTabelaSelecionada}" />
</p:selectOneMenu>
// Seu Bean
/** Metodo chamado quando troca um item da combo */
public void carregarItensTabelaSelecionada(javax.faces.event.AjaxBehaviorEvent event) {
Tabela tabelaSelecionada = this.selectedTabela; // valor do item selecionado
...
}
Sendo que caso vc não queira usar o método listner do ajax, você pode colocar somente …
<p:ajax event="change" process="@this">
…que o atributo “selectedTabela” já vai ser setado na hora que o usuario mudar o item da combo.
Com certeza existem. O que você fez foi a pior coisa a se fazer no forum, dar a resposta…
Eu mandei um artigo dele usando com ajax do PrimeFaces com intuito de fazer rlanhellas a pesquisar e estudar. Ainda mais por ser um problema simples de desenvolvedores iniciantes.
Cara,
Se ele for uma pessoa interessada ele vai olhar o link que você enviou, que é super legal … mas muitas vezes a resposta também ajuda, até porque no exemplo que você enviou não possui um exemplo de um ajax dentro de uma combo usando o evento change, ele nunca iria conseguir fazer só com aquele exemplo. O forum não tem o intuito só de ensinar, para isso existem diversas matérias no Google, que através da minha resposta ele pode encontrar diversos conteúdos a respeito do assunto.