selectOneMenu Dinamico

2 respostas
G

Ola boa tarde pessoal, estou aqui a pedir ajuda, estou fazendo um trabalho de conclusao de curso, seria um sistema para farmacias online com java.
Ja fiz a parte de cadastros, cliente,produto,funcionario,fornecedores e agora tenho que fazer a parte de entrada de produtos.
Estou com umas duvidas, mas como diz jack vamos por partes.
Na entrada de produtos quero colocar dois componetes selectOneMenu um para selecionar o fornecedor e outro para selecionar o produtos
Estou tentando implementar meu EntradaBean da seguinte maneira.

package managedbeans;

import dao.DAOEntrada;
import dto.DTOEntrada;
import dto.DTOFornecedor;
import dto.DTOProduto;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.SelectItem;

public class EntradaBean {

    private DTOEntrada entrada;
    private DAOEntrada entradas;
    private DTOFornecedor fornecedor;
    private List<DTOFornecedor> listaFornecedores;
    private ArrayList<SelectItem> comboFornecedores;
    private String fornecedorSelecionado;
    private List<DTOProduto> listaProdutos;
    private boolean erro;

    public EntradaBean() {
        entrada = new DTOEntrada();
        entradas = new DAOEntrada();

    }

  
    public ArrayList<SelectItem> getComboFornecedores() {
        return comboFornecedores;
    }

    /**
     * @param comboFornecedores the comboFornecedores to set
     */
    public void setComboFornecedores(ArrayList<SelectItem> comboFornecedores) {
        this.comboFornecedores = comboFornecedores;
    }

    /**
     * @return the fornecedorSelecionado
     */
    public String getFornecedorSelecionado() {
        return fornecedorSelecionado;
    }

    /**
     * @param fornecedorSelecionado the fornecedorSelecionado to set
     */
    public void setFornecedorSelecionado(String fornecedorSelecionado) {
        this.fornecedorSelecionado = fornecedorSelecionado;
    }

    public List<SelectItem> getComboFornecedor() {

        if (comboFornecedores == null) {
            fornecedor = new DTOFornecedor();
            comboFornecedores = new ArrayList<SelectItem>();
            comboFornecedores.add(new SelectItem(fornecedor.getRazaoSocial()));

        }
        return comboFornecedores;
    }

    public String insercaoEntrada() {
        entrada = new DTOEntrada();
        return "entradaProduto";
    }
}

Meu DAOEntrada

package dao;

import dto.DTOEntrada;
import java.sql.Connection;
import conexao.Conexao;
import dto.DTOFornecedor;
import dto.DTOProduto;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.SelectItem;

public class DAOEntrada {

    private Connection con;

    public DAOEntrada() {
        con = Conexao.getInstancia().criarConexao();
    }


    public ArrayList<DTOFornecedor> getComboFornecedores() {
        ArrayList<DTOFornecedor> fornecedores = new ArrayList<DTOFornecedor>();

        String sql = " SELECT `pessoa`.*, `pessoa_juridica`.*,`fornecedor`.*" +
                " from `pessoa`,`pessoa_juridica`,`fornecedor` " +
                " where `pessoa`.`idPessoa` = `pessoa_juridica`.`Pessoa_idPessoa` " +
                " and `pessoa_juridica`.`Pessoa_idPessoa` = `fornecedor`.`Pessoa_Juridica_Pessoa_idPessoa` " +
                " order by pessoa_juridica.razaoSocial asc ";

        try {
            PreparedStatement smtp = con.prepareStatement(sql);
            ResultSet rs = smtp.executeQuery();


            while (rs.next()) {
                ArrayList comboForneced = new ArrayList();

                DTOFornecedor f = new DTOFornecedor();

                comboForneced.add(new SelectItem(String.valueOf(rs.getInt("idFornecedor")),
                        rs.getString("razaoSocial")));

                f.setId(rs.getInt("idFornecedor"));
                f.setRazaoSocial(rs.getString("razaoSocial"));

                fornecedores.add(f);
            }

        } catch (SQLException sqle) {
            sqle.printStackTrace();
        }
        return fornecedores;
    }
    

}

Meu jsp.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
         pageEncoding="ISO-8859-1"%>
<%@page import="java.util.*, dto.*" %>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html" %>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Entrada de Produtos</title>
    </head>
    <body>
        <jsp:include page="cabecalho.jsp" flush="true"/>
        <br><br>
        <f:view>
            <f:loadBundle basename="managedbeans.labels" var="label" />
            <div align="center">
                <h:form>
                    <h:panelGrid columns="3">

                        <h:selectOneMenu id="funcao" required="true" value="#{EntradaBean.entrada.idFornecedor}" >
                            <f:selectItems value="#{EntradaBean.comboFornecedor}"/>
                        </h:selectOneMenu>


                    </h:panelGrid>
                </h:form>
                <h:outputText rendered="#{ProdutoBean.erro}" value="#{label.cadastro}" />
            </div>
        </f:view>
    </body>
</html>

Erro
Exception Details: java.lang.NullPointerException
null

Possible Source of Error:
Class Name: com.sun.faces.renderkit.html_basic.MenuRenderer
File Name: MenuRenderer.java
Method Name: renderOption
Line Number: 580

Oque posso fazer para resolver isto, oque estou fazendo de errado ?
Muito obrigado

2 Respostas

LPJava

olha como eu implementei um aqui…

<td><label jsfc="h:outputLabel">Cargo</label></td> <td><input jsfc="h:selectOneMenu" value="#{controllerUser.usuario.funcao}" > <f:selectItems value="#{controllerCargo.cargos}" /> </input></td> </tr> <tr> <td><input jsfc="h:commandButton" type="submit" value="Cadastrar" action="#{controllerUser.verificarLogin}" class="botao" /></td>

Vem do BD a informação para o selectone.

abracos,

G

Boa noite Pessoal aguem tem uma dica ???

Criado 15 de maio de 2010
Ultima resposta 18 de mai. de 2010
Respostas 2
Participantes 2