1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Utilização do p:SelectOneMenu PrimeFaces

Bom dia senhores. Estou com uma dúvida em como utilizar o p:SelectOneMenu. Eu dei uma lida na documentação do PrimeFaces, porém sigo todas as regras, mas não funciona. Eu quero receber o "IDempresa" do meu BEAN: EmpresaBean para popular o atributo IDEmpresaSistema no meu BEAN: MBSistema. Quando executo a linha de código abaixo nenhuma das minhas empresas aparecem. Vou enviar o outro código que as empresas aparecem,mas não setam seu "ID" no meu "MBSistema.sistema.IdEmpresaSistema".

<h:outputText value="Selecione a Empresa relacionada ao Sistema:" />
                        <p:selectOneMenu required="false" value="#{MBSistema.sistema.idSistema}"
                            var="emp" filter="true">
                            <f:selectItem itemLabel="Selecione a Empresa:" itemValue="" />
                            <f:selectItems value="#{empresaBean.listaEmpresas}"
                                var="empresas" itemLabel="#{empresas.nomeFantEmpresa}"
                                itemValue="#{empresas.idEmpresa}"  >
                                <p:column>
                                <h:outputText value="#{empresas.nomeFantEmpresa}" />
                                </p:column>

                                </f:selectItems>

                        </p:selectOneMenu>

O código abaixo as empresas aparecem, porem não setam obviamente porque os códigos estão errados:

<!-- MEU SELECT_ONE_MENU, FAZER SISTEMA PARA SETAR A EMPRESA NO SISTEMA -->
                        <h:outputText value="Selecione a Empresa relacionada ao Sistema:" />
                        <p:selectOneMenu required="false" value="#{empresaBean.empresa}"
                            var="emp" filter="true">
                            <f:selectItem itemLabel="Selecione a Empresa:" itemValue="" />
                            <f:selectItems value="#{empresaBean.listaEmpresas}"
                                var="empresas" itemLabel="#{empresas.nomeFantEmpresa}"
                                itemValue="#{emp.idEmpresa}"/>
                            <p:column>
                                <h:outputText value="#{emp.nomeFantEmpresa}" />
                            </p:column>
                        </p:selectOneMenu>

Os códigos abaixo estão Minhas Classes BEANS inteiras e minha página XHTML que separei por motivos organizacionais. Desde já agradeço a enorme ajuda! ;)

Página Cadastro de Sistemas:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">

<ui:composition template="Template.xhtml">
    <ui:define name="content">
        <div class="content_wrapper">
            <div class="content">

                <h:form id="formNovo">
                    <div align="left">
                        <h:outputText value="Nome do Sistema:" />
                        <p:inputText size="50" id="NomeSistema"
                            value="#{MBSistema.sistema.nomeSistema}" autocomplete="false"
                            required="true" />
                        <br />

                    <!-- MEU SELECT_ONE_MENU, FAZER SISTEMA PARA SETAR A EMPRESA NO SISTEMA -->
                        <h:outputText value="Selecione a Empresa relacionada ao Sistema:" />
                        <p:selectOneMenu required="false" value="#{MBSistema.sistema.idSistema}"
                            var="emp" filter="true">
                            <f:selectItem itemLabel="Selecione a Empresa:" itemValue="" />
                            <f:selectItems value="#{empresaBean.listaEmpresas}"
                                var="empresas" itemLabel="#{empresas.nomeFantEmpresa}"
                                itemValue="#{empresas.idEmpresa}"  >
                                <p:column>
                                <h:outputText value="#{empresas.nomeFantEmpresa}" />
                                </p:column>

                                </f:selectItems>

                        </p:selectOneMenu>


                        <p:commandButton id="cadastrar" ajax="false" value="Cadastrar"
                            actionListener="#{MBSistema.cadastrarSistema}" />
                    </div>

                </h:form>

                <h:form id="formGrid">

                    <!-- Meu Painel com os Sistemas -->
                    <p:dataTable emptyMessage="Nenhum Sistema Encontrado" id="Grid"
                        var="sist" value="#{MBSistema.listaSistema}"
                        selection="#{MBSistema.sistema}" selectionMode="single"
                        rowKey="#{sist.idSistema}" paginator="true"
                        paginatorPosition="top" rows="5">
                        <f:facet name="header">  
                                Sistemas
                            </f:facet>
                        <h:outputText value="Nome Sistema" />
                        <p:column headerText="Buscar:" filterBy="#{sist.nomeSistema}">
                                <h:outputText value="#{sist.nomeSistema}" />
                        </p:column>

                        <p:column headerText="Editar" width="5%" exportable="false">
                            <p:commandButton oncomplete="editar.show()" icon="ui-icon-pencil"
                                update=":formEditar">
                                <f:setPropertyActionListener target="#{MBSistema.sistema}"
                                    value="#{sist}" />
                            </p:commandButton>
                        </p:column>


                        <p:column headerText="Excluir" width="5%" exportable="false">
                            <p:commandButton icon="ui-icon-circle-close"
                                onclick="confirmation.show()" update=":formGrid">
                                <!-- Setando meu objeto " sist" da lista "ListaSistema" -->
                                <f:setPropertyActionListener target="#{MBSistema.sistema}"
                                    value="#{sist}" />

                            </p:commandButton>
                        </p:column>


                    </p:dataTable>


                    <!-- Painel para Exportar Dados  -->
                    <h:panelGrid columns="2">
                        <p:panel header="Exporte estes dados em tela para:">
                            <h:commandLink id="excel">
                                <p:graphicImage url="images/XLSok.png" />
                                <p:dataExporter type="xls" target="Grid" fileName="Sistemas" />
                            </h:commandLink>

                            <h:commandLink id="pdf">
                                <p:graphicImage url="images/pdfok.png" />
                                <p:dataExporter target="Grid" type="pdf" fileName="Sistemas" />
                            </h:commandLink>

                            <h:commandLink id="csv">
                                <p:graphicImage url="images/csvok.png" />
                                <p:dataExporter type="csv" target="Grid" fileName="Sistemas" />
                            </h:commandLink>

                            <h:commandLink id="xml">
                                <p:graphicImage url="images/XMLok.png" />
                                <p:dataExporter type="xml" target="Grid" fileName="Sistemas" />
                            </h:commandLink>
                        </p:panel>
                    </h:panelGrid>

                </h:form>

                <!-- Início do form Editar -->
                <h:form id="formEditar">
                    <p:dialog id="dialEditar" widgetVar="editar">
                        <h:outputText value="Nome do Sistema:" />
                        <p:inputText size="50" id="NomeSistema"
                            value="#{MBSistema.sistema.nomeSistema}" autocomplete="false"
                            required="true" />
                        <p:commandButton id="alterar" ajax="false" value="Alterar"
                            actionListener="#{MBSistema.alterarSistema}" update=":formNovo" />
                    </p:dialog>
                </h:form>



                <!-- Tratamento com Mensagem para saber se realmente o usuário deseja excluir a Empresa -->
                <h:form id="dialogo">
                    <p:confirmDialog message="Gostaria de Excluir este Sistema?"
                        hideEffect="explode" header="Aviso" severity="alert"
                        widgetVar="confirmation" modal="true">
                        <p:commandButton id="btnSim" value="Sim"
                            oncomplete="confirmation.hide();"
                            actionListener="#{MBSistema.excluirSistema}" update=":formGrid" />
                        <p:commandButton id="btnNao" value="Não"
                            onclick="confirmation.hide();" type="button" />
                    </p:confirmDialog>
                    <div align="right">
                        <p:clock pattern="HH:mm:ss dd.MM.yyyy" />
                    </div>
                </h:form>

            </div>
        </div>
    </ui:define>
</ui:composition>
</html>

BEANS EMPRESAS E SISTEMAS:

SISTEMA:

package MB;

import java.sql.SQLException;
import java.util.List;

import javax.faces.bean.ViewScoped;
import javax.faces.bean.ManagedBean;

import Banco.Alterar_DAO;
import Banco.Excluir_DAO;
import Banco.Inserir_DAO;
import Banco.Mostrar_DAO;
import RegraNegocio.Sistema;
@ManagedBean(name="MBSistema")
@ViewScoped
public class MBSistema {
   Sistema sistema = new Sistema();
 private List<Sistema> listaSistema;


public MBSistema() {

}



//Métodos de Cadastro,Alteracao e Exclusao
public void cadastrarSistema()throws SQLException{
    Inserir_DAO inserir = new Inserir_DAO();
    inserir.cadastrarSistemaDAO(getSistema());
   sistema= new Sistema();
}


public void alterarSistema()throws SQLException{
    Alterar_DAO alterar = new Alterar_DAO();
    alterar.alterarSistemaDAO(getSistema());
    Mostrar_DAO mostrar = new Mostrar_DAO();
    listaSistema = mostrar.mostrarSistemaDAO();
    sistema=new Sistema();
}

public void excluirSistema()throws SQLException{
    Excluir_DAO excluir = new Excluir_DAO();
    excluir.excluirSistemaDAO(getSistema());
}

// Gets e Sets
public Sistema getSistema() {
    return sistema;
}

public void setSistema(Sistema sistema) {
    this.sistema = sistema;
}

public List<Sistema> getListaSistema() {
    Mostrar_DAO mostrar =new Mostrar_DAO();
    listaSistema = mostrar.mostrarSistemaDAO();
    return listaSistema;
}

public void setListaSistema(List<Sistema> listaSistema) {
        this.listaSistema = listaSistema;
}


}

EMPRESA:

package MB;
import java.sql.SQLException;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.bean.ViewScoped;

import Banco.Alterar_DAO;
import Banco.Excluir_DAO;
import Banco.Inserir_DAO;
import Banco.Mostrar_DAO;
import RegraNegocio.Empresa;

import com.lowagie.text.BadElementException;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Image;
import com.lowagie.text.PageSize;

import java.io.File;
import java.io.IOException;

import javax.servlet.ServletContext;



@ManagedBean(name = "empresaBean")
@ViewScoped
public class MBempresa {

    Empresa empresa=new Empresa();
    private List<Empresa> listaEmpresas;
 private List<Empresa> pesquisaEmpresa;


    // Construtor MBEmpresa
    public MBempresa() {

    }

    public List<Empresa> getListaEmpresas() throws SQLException {
        Mostrar_DAO vetoempresaDAO = new Mostrar_DAO();
        return vetoempresaDAO.mostrarEmpresaDAO();
    }

    public void setListaEmpresas(List<Empresa> listaEmpresas)throws SQLException {
        Mostrar_DAO vetorEmpresa = new Mostrar_DAO();
        this.listaEmpresas = vetorEmpresa.mostrarEmpresaDAO();
    }


    public void getListaNomeEmpresas() throws SQLException{
        Mostrar_DAO listaDAO = new Mostrar_DAO();
        for (int i = 0; i <listaDAO.mostrarEmpresaDAO().size(); i++) {
            listaDAO.mostrarEmpresaDAO().get(i);
        }
    }


// Início - Métodos CRUD
    public void cadastraEmpresa() {
        Inserir_DAO inserir = new Inserir_DAO();
        inserir.cadastrarEmpresaDAO(getEmpresa());
        empresa = new Empresa();
    }

    public void alterarEmpresa() throws SQLException {
        Alterar_DAO alterar = new Alterar_DAO();
        alterar.alterarEmpresaDAO(getEmpresa());
        listaEmpresas = new Mostrar_DAO().mostrarEmpresaDAO();


    }

    public void excluirEmpresa(){
                 Excluir_DAO excluir = new Excluir_DAO();
                 excluir.excluirEmpresaDAO(empresa);
             }

    // Fim - Métodos CRUD    


    public void mensagemCadastro(){
        FacesContext cad =  FacesContext.getCurrentInstance();
        cad.addMessage(null, new FacesMessage ("Empresa Cadastrada com Sucesso!"));
    }

    //Gets e Sets
    public Empresa getEmpresa() {
        return empresa;
    }

    public void setEmpresa(Empresa empresa) {
        this.empresa = empresa;
    }
  public List<Empresa> getPesquisaEmpresa() {
    return pesquisaEmpresa;
}
  public void setPesquisaEmpresa(List<Empresa> pesquisaEmpresa) {
    this.pesquisaEmpresa = pesquisaEmpresa;
}



     //Método relacionado a preparação da mensagem
    public void addMessage(String summary) {
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, summary,  null);
        FacesContext.getCurrentInstance().addMessage(null, message);
    }



}
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

3 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags primefaces java-ee web xhtml eclipse ou faça a sua própria pergunta.