SelectOneMenu+primefaces

Pessoal gostaria de saber como faço para popular e enviar para meu MB o objeto selecionado na comboBox, desde jpa obrigado a todos.

Poderia fazer uma requisição ajax para atualizar a propriedade do managedBean

Não entendi muito bem, vou postar o código para ajudar melhor:

Bean:

[code]import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import org.primefaces.event.SelectEvent;

@ManagedBean(name = “gerenciamentoCadastroEquipamentosMB”)
@RequestScoped
public class GerenciamentoCadastroEquipamentosMB {

private Equipamento equipamento;
private List<Equipamento> equipamentos;
private List<SelectItem> tipos;
private List<SelectItem> antenas;
private List<SelectItem> funcoes;
private List<SelectItem> modelos;
private List<SelectItem> responsaveis;
private List<SelectItem> localizacoes;
private boolean linhaSelecionada = true;
private boolean btnEditar = true;
private boolean btnVisualizar = true;
private boolean btnExluir = true;

public GerenciamentoCadastroEquipamentosMB() {
    this.equipamento = new Equipamento();
}

public void salvar(ActionEvent actionEvent) {
    System.out.println("Tipo: " + this.equipamento.getTipo());
    InterfaceEquipamentoDao interfaceEquipamentoDao = new EquipamentoDaoImp();
    interfaceEquipamentoDao.salva(this.equipamento);
    FacesContext context = FacesContext.getCurrentInstance();
    context.addMessage(null, new FacesMessage("Salvar Equipamento", "Equipamento " + this.equipamento.getClassificacao() + " salvo com sucesso."));
    this.equipamento = new Equipamento();

}

public void editaEquipamento() {
    InterfaceEquipamentoDao interfaceDao = new EquipamentoDaoImp();
    interfaceDao.edita(this.equipamento);
    this.btnEditar = false;
    this.btnVisualizar = false;
    this.btnExluir = false;
    FacesContext context = FacesContext.getCurrentInstance();
    context.addMessage(null, new FacesMessage("Editar Equipamento", "Equipamento " + this.equipamento.getClassificacao() + " alterado com sucesso."));
}

public void excluirEquipamento(Long idEquipamento) {
    InterfaceEquipamentoDao interfaceEquipamentoDao = new EquipamentoDaoImp();
    this.equipamento = interfaceEquipamentoDao.buscaPorID(idEquipamento);
    interfaceEquipamentoDao.exclui(this.equipamento);
    this.btnEditar = false;
    this.btnVisualizar = false;
    this.btnExluir = false;
    FacesContext context = FacesContext.getCurrentInstance();
    context.addMessage(null, new FacesMessage("Excluir Equipamento", "Equipamento " + this.equipamento.getClassificacao() + " excluido com sucesso."));
}

public void onRowSelect(SelectEvent event) {
    this.btnEditar = false;
    this.btnVisualizar = false;
    this.btnExluir = false;
}

@PostConstruct
public void buscaTipoEquipamentos() {
    InterfaceDao<Tipo> interfaceDao = new TipoDaoImp();
    this.tipos = new ArrayList<SelectItem>(5);
    for (Tipo tipo : interfaceDao.findAll()) {
        this.tipos.add(new SelectItem(tipo.getIdTipo(), tipo.getNome()));
    }
    System.out.println("Tipos tem: " + this.tipos.size() + " registros.");
}

@PostConstruct
public void buscaAntenas() {
    InterfaceDao<Antena> interfaceDao = new AntenaDaoImp();
    this.antenas = new ArrayList<SelectItem>(5);
    for (Antena antena : interfaceDao.findAll()) {
        this.antenas.add(new SelectItem(antena.getIdAntena(), antena.getNome()));
    }
}

@PostConstruct
public void buscaFuncoes() {
    InterfaceDao<Funcao> interfaceDao = new FuncaoDaoImp();
    this.funcoes = new ArrayList<SelectItem>(5);
    for (Funcao funcao : interfaceDao.findAll()) {
        this.funcoes.add(new SelectItem(funcao.getIdFuncao(), funcao.getNome()));
    }
}

@PostConstruct
public void buscaModelos() {
    InterfaceDao<Modelo> interfaceDao = new ModeloDaoImp();
    this.modelos = new ArrayList<SelectItem>(5);
    for (Modelo modelo : interfaceDao.findAll()) {
        this.modelos.add(new SelectItem(modelo.getIdModelo(), modelo.getNome()));
    }
}

@PostConstruct
public void buscaResponsaveis() {
    InterfaceDao<Responsavel> interfaceDao = new ResponsavelDaoImp();
    this.responsaveis = new ArrayList<SelectItem>(5);
    for (Responsavel responsavel : interfaceDao.findAll()) {
        this.responsaveis.add(new SelectItem(responsavel.getIdResponsavel(), responsavel.getNome()));
    }
}

@PostConstruct
public void buscaLocalizacoes() {
    InterfaceDao<Localizacao> interfaceDao = new LocalizacaoDaoImp();
    this.localizacoes = new ArrayList<SelectItem>(5);
    for (Localizacao localizacao : interfaceDao.findAll()) {
        this.localizacoes.add(new SelectItem(localizacao.getIdLocalizacao(), localizacao.getNome()));
    }
}

public List<SelectItem> getTipos() {
    return tipos;
}

public void setTipos(List<SelectItem> tipos) {
    this.tipos = tipos;
}

public List<SelectItem> getAntenas() {
    return antenas;
}

public void setAntenas(List<SelectItem> antenas) {
    this.antenas = antenas;
}

public List<SelectItem> getFuncoes() {
    return funcoes;
}

public void setFuncoes(List<SelectItem> funcoes) {
    this.funcoes = funcoes;
}

public List<SelectItem> getModelos() {
    return modelos;
}

public void setModelos(List<SelectItem> modelos) {
    this.modelos = modelos;
}

public List<SelectItem> getResponsaveis() {
    return responsaveis;
}

public void setResponsaveis(List<SelectItem> responsaveis) {
    this.responsaveis = responsaveis;
}

public List<SelectItem> getLocalizacoes() {
    return localizacoes;
}

public void setLocalizacoes(List<SelectItem> localizacoes) {
    this.localizacoes = localizacoes;
}

public Equipamento getEquipamento() {
    return equipamento;
}

public void setEquipamento(Equipamento equipamento) {
    this.equipamento = equipamento;
}

public List<Equipamento> getEquipamentos() {
    InterfaceEquipamentoDao interfaceEquipamentoDao = new EquipamentoDaoImp();
    this.equipamentos = interfaceEquipamentoDao.buscaEquipamentos();
    return this.equipamentos;
}

public void setEquipamentos(List<Equipamento> equipamentos) {
    this.equipamentos = equipamentos;
}

public boolean isLinhaSelecionada() {
    return linhaSelecionada;
}

public void setLinhaSelecionada(boolean linhaSelecionada) {
    this.linhaSelecionada = linhaSelecionada;
}

public boolean isBtnEditar() {
    return btnEditar;
}

public void setBtnEditar(boolean btnEditar) {
    this.btnEditar = btnEditar;
}

public boolean isBtnVisualizar() {
    return btnVisualizar;
}

public void setBtnVisualizar(boolean btnVisualizar) {
    this.btnVisualizar = btnVisualizar;
}

public boolean isBtnExluir() {
    return btnExluir;
}

public void setBtnExluir(boolean btnExluir) {
    this.btnExluir = btnExluir;
}

}
[/code]

página:

<h:form id="formCadEquipamento">
                    <p:dialog header="Cadastrar Equipamento" widgetVar="dlgCadEquipamento" resizable="false" id="dialogCadEquipamento" modal="true">
                        <h:panelGrid id="pngCadastrar" columns="2" cellpadding="4" >
                            <h:outputLabel value="Tag:"/>
                            <p:inputText value="#{gerenciamentoCadastroEquipamentosMB.equipamento.tag}" disabled="false" style="width: 200px;font-weight:bold; "/>
                            <h:outputLabel value="Tipo:"/>
                            <p:selectOneMenu id="tipo" value="#{gerenciamentoCadastroEquipamentosMB.tipos}" style="width: 200px;">  
                                <f:selectItem itemLabel="--Selecionar Tipo--" itemValue="" />  
                                <f:selectItems value="#{gerenciamentoCadastroEquipamentosMB.tipos}" /> 
                            </p:selectOneMenu>
                            <h:outputLabel value="Potência:"/>
                            <p:inputText value="#{gerenciamentoCadastroEquipamentosMB.equipamento.potenciaMax}" disabled="false" style="width: 200px;font-weight:bold; "/>
                            <h:outputLabel value="Classificação:"/>
                            <p:inputText value="#{gerenciamentoCadastroEquipamentosMB.equipamento.classificacao}" disabled="false" style="width: 200px;font-weight:bold; "/>
                            <h:outputLabel value="Antena:"/>
                            <p:inputText value="#{gerenciamentoCadastroEquipamentosMB.equipamento.antena.nome}" disabled="false" style="width: 200px;font-weight:bold; "/>
                            <h:outputLabel value="Alcance:"/>
                            <p:inputText value="#{gerenciamentoCadastroEquipamentosMB.equipamento.alcance}" disabled="false" style="width: 200px;font-weight:bold; "/>
                            <h:outputLabel value="modelo:"/>
                            <p:inputText value="#{gerenciamentoCadastroEquipamentosMB.equipamento.modelo.nome}" disabled="false" style="width: 200px;font-weight:bold; "/>
                            <h:outputLabel value="Função:"/>
                            <p:inputText value="#{gerenciamentoCadastroEquipamentosMB.equipamento.funcao.nome}" disabled="false" style="width: 200px;font-weight:bold; "/>
                            <h:outputLabel value="Localização:"/>
                            <p:inputText value="#{gerenciamentoCadastroEquipamentosMB.equipamento.localizacao.nome}" disabled="false" style="width: 200px;font-weight:bold; "/>
                            <h:outputLabel value="Responsável:"/>
                            <p:inputText value="#{gerenciamentoCadastroEquipamentosMB.equipamento.responsavel.nome}" disabled="false" style="width: 200px;font-weight:bold; "/>
                        </h:panelGrid>
                        <p:separator/>
                        <p:commandButton value="OK" actionListener="#{gerenciamentoCadastroEquipamentosMB.salvar}" update=":formEquipamento:tableEquipamentos :formEquipamento:growl :formEquipamento:btnEditar :formEquipamento:btnExcluir :formEquipamento:btnVisualizar :formCadEquipamento:dialogCadEquipamento" oncomplete="dlgCadEquipamento.hide();"/>
                        <p:commandButton value="Cancelar" onclick="dlgCadEquipamento.hide();"/>
                    </p:dialog>
                </h:form>

Qual o problema ?
Ele não está populando a propriedade do value do managedBean

Ele esta carregando, consegui fazer, o que não estou conseguindo é enviar o valor selecionado na comboBox e enviar para o servidor.

Dá algum erro ?
Ele tinha que popular a propriedade do value do selectOneMenu, que no seu caso é gerenciamentoCadastroEquipamentosMB.tipos

O problema está na propriedade value do p:selectOneMenu

Nessa propriedade você precisa definir um método do bean para setar o o objeto selecionado. Por exemplo:

&lt;p:selectOneMenu id="tipo" value="#{gerenciamentoCadastroEquipamentosMB.selecionado}" style="width: 200px;"&gt;
  ...
&lt;/p:selectedOneMenu&gt;

No bean:

...
private Object selecionado;

public void setSelecionado(Object o) {
  selecionado = o;
}

public Object getSelecionado() {
  return selecionado;
}

Também tem atributos faltando no f:selectItems.

Você precisa definir itemLabel, itemValue e var:

&lt;f:selectItems value="#{gerenciamentoCadastroEquipamentosMB.tipos}" var="tipo" 
                         itemLabel="#{tipo.nome}" itemValue="#{tipo}"/&gt;