Inserindo registro vindo de um combobox de jsf

4 respostas
rjdiogo

Ola. Estou com uma dúvida de como gravar vindo de um selectonemenu. A minha combobox está assim:

<h:outputText value="Tipo de produto" /> <h:selectOneMenu value="#{item.tipoproduto}"> <f:selectItem itemValue="racao" itemLabel="Ração"/> <f:selectItem itemValue="comedouro" itemLabel="Comedouro"/> <f:selectItem itemValue="brinquedo" itemLabel="Brinquedo"/> <f:selectItem itemValue="remedio" itemLabel="Remédio"/> <f:selectItem itemValue="gaiola" itemLabel="Gaiola"/> <f:selectItem itemValue="aquario" itemLabel="Aquário"/> </h:selectOneMenu>

Na minha classe controle de item eu tenho um setTipoproduto e um getTipoproduto.
No meu DaoItem eu tenho um método grava que grava esse campo

public static void grava(Item i) throws Exception{ open(); stmt = con.prepareStatement("insert into item(descricao, valor, quantitem, quantmin, estoque, tipoproduto) values(?,?,?,?,?,?)"); stmt.setString(1, i.getDescricao()); stmt.setString(2, i.getTipoproduto()); stmt.setString(3, i.getValor()); stmt.setString(4, i.getQuantitem()); stmt.setString(5, i.getQuantmin()); stmt.setString(6, i.getEstoque()); stmt.execute(); }

O problema é que não está sendo gravado no banco de dados esse sql. A minha consulta é retornada numa datatable e está funcionando se eu remover o campo tipoproduto, é inserido no banco de dados se não houver essa combobox.
Valeu desde já pessoal!!!

4 Respostas

rjdiogo

Alguém entendeu a minha dúvida?

thundercas

Cara, acho melhor vc postar no local específico para dúvidas WEB… Poucos aqui conhecerão JSF…

Sugestão, verifique se o argumento não está vindo nulo da JSF… abraços

rjdiogo

Eu me liguei nisso o problema é que não tem como excluir o tópico ou mover ele…
ai pra nao ter ele em 2 lugares acabei dexando minha dúvida aqui mesmo, mas se não tiver problema eu posto la que também acho melhor =D
valeu pela força thunder!

thimor

Voce pode usar assim na sua pagina, porem tera que ter esse metodo para retornar uma lista.

<h:outputText value="Sub Grupo:"/> <h:selectOneMenu id="subGrupoID" value="#{produto.produto.subGrupoID}" title="SubGrupoID" > <f:selectItems value="#{subgrupo.subgruposAvailableSelectOne}"/> </h:selectOneMenu>

O metodo para retornar uma lista fica assim no seu managed bean.

public SelectItem[] getSubgruposAvailableSelectOne() {
        return getSubgruposAvailable(true);
    }

    private SelectItem[] getSubgruposAvailable(boolean one) {
        List<Subgrupo> allSubgrupos = getSubgrupos(true);
        int size = one ? allSubgrupos.size() + 1 : allSubgrupos.size();
        SelectItem[] items = new SelectItem[size];
        int i = 0;
        if (one) {
            items[0] = new SelectItem("", "SubGrupos");
            i++;
        }
        for (Subgrupo x : allSubgrupos) {
            items[i++] = new SelectItem(x, x.getSubGrupoDescricao());
        }
        return items;
    }

ou de forma mais simples voce pode fazer assim, nesse caso usa somente na pagina jsf.

<h:outputText value="Forma de Pagamento:"/> <h:selectOneMenu id="formaPagamento" value="#{pedido.pedido.formaPagamento}" title="FormaPagamento"> <f:selectItem itemLabel="Boleto" itemValue="Boleto" /> <f:selectItem itemLabel="Cheque" itemValue="Cheque" /> <f:selectItem itemLabel="Dinheiro" itemValue="Dinheiro" /> </h:selectOneMenu>
nesse caso como o seu bean tem o objeto que vc deseja alterar ele ja altera direto na propriedade dele.

Criado 10 de novembro de 2008
Ultima resposta 12 de nov. de 2008
Respostas 4
Participantes 3