Problemas com selectOneMenu Primefaces

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 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.