<richfaces: datatable

13 respostas
R

Bom dia pessoal, estou implementando uma aplicacao onde
tenho uma tabela, e em uma coluna da tabela tem um textfield.Preciso
que ao usuario acionar o botao eu possa recuperar todos os valores das linhas da tabela,principalmente
os textfield.Alguem sabe como?

13 Respostas

J

Acredito que você terá que de alguma forma selecionar essa linha da tabela, através de um check box, ou colocando um link na linha, e ao clicar no botão recuperar o id dessa linha selecionada para poder recuperar o registro na base de dados, ArrayList etc…
Mas acho que precisa especificar melhor sua dúvida.

R

Cara,preciso que ao clicar em um botao que nao esta na tabela, eu consiga pegar os valores de todos os campos das linhas da tabela da pagina principalmente a do textfield.Exemplo uma tabela com codigo,produto,preco o usuario altera o preco clica no botao e o sistema joga as informacoes alteradas no banco, lembrando que a varios produtos na tabela e ele nao pode ter um botao a cada linha.

R

Eai senhores,sera que alguem pode dar um ajuda neste caso.

alves.Felipe

cara… vc quer que o usuário va adicionando os produtos nessa tabela… é isso?
ou vai ter uma tabela ja com dados e apenas alguns campos habilitados para ele digitar.?

R

sim cara,a tabela tera 4 colunas,sendo que a quarta coluna tera um textfield onde o usuario, digita o preço do produto,pois o sistema
é de cotação de produtos,e esta tela e a do fornecedor que digita os preços.

alves.Felipe

é bem provavel que vc esta passado uma lista de objetos…(por ex: ItemCotacao)…
mesmo vc só digitando no campo e depois dar o submit, nao esta populando o campo do objeto ItemCotacao?
se nao tiver…então pega por parametros… usando o getParameterNames();
ai verifica qual tem o id da tabela… ai vai ter que pegar os dados pela posição da tabela… entende?

alves.Felipe

da uma olhada… ve se ajuda

R

O cara não ajudou muito não.Preciso entregar isto e só falta
este processo.Sou novato em desenvolvimento web, se alguem tem um exemplo ou solução agradeço.

alves.Felipe

ja fez?
posta seu codigo ai

R

Mano ainda não implementei não, mas é que este mesmo projeto quando tentei implementar com visual web jsf(terrivél) de pau nesta etapa que é a final.
Também to com outro problema aqui talvez este seja mais tranquilo, é que meu combobox passa só nulo para o manager bean,vou postar os codigos do bean e do jsp para você e a galera olhar.Valeu pela ajuda cara,pois eu to quase desanimando .

//jsp
<%-- 
    Document   : CadFornecedor
    Created on : 24/01/2010, 00:04:24
    Author     : suporte
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@taglib prefix="rich" uri="http://richfaces.ajax4jsf.org/rich" %>
<%@ taglib prefix="a4j" uri="http://richfaces.org/a4j"%>
<%@taglib prefix="easy" uri="http://easyfaces.com.br/easyfaces" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<f:view>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
            <title>Cadastro Forn..</title>
        </head>
        <body>
            <h:form id="form1">
                <h:graphicImage height="70" width="1280" url="/superior.gif" />

                <br>
                <br>
                <br><h:messages/>
                <br>
                <br>
                <fieldset>
                    <legend ><strong>Cadastro Fornecedor</strong></legend>
                    <h:panelGrid columns="2">
                        <h:outputLabel for="tfcodprod" value="Codigo"/>
                        <h:inputText id="tfcodprod"  value="0" disabled="true" size="10"/>
                        <h:outputLabel for="tfrazaosocial" value="Razao Social"/>
                        <h:inputText id="tfrazaosocial" autocomplete="true" maxlength="60" size="80" value="#{ControleForn.fornecedor.nome_Fornecedor}"  required="true"/>
                        <h:outputLabel for="tfcontato" value="Contato"/>
                        <h:inputText id="tfcontato" autocomplete="true" maxlength="20" size="50" required="true" value="#{ControleForn.fornecedor.contato_Fornecedor}" />
                        Fone
                        <easy:inputPhone  useMask="true" required="true" value="#{ControleForn.fornecedor.fone_Fornecedor}" />
                        <h:outputLabel for="tfendereco" value="Endereco"/>
                        <h:inputText id="tfendereco" autocomplete="true" maxlength="60" size="100" value="#{ControleForn.fornecedor.endereco_Fornecedor}"  required="true"/>
                        <h:outputLabel for="listacid" value="Cidades MG"/>
                        <rich:comboBox id="listacid"  value="#{ControleForn.cidade}" suggestionValues="#{ControleForn.listaItens}" directInputSuggestions="true" binding="#{ControleForn.cidade}" defaultLabel="esclha a cidade">
                            <a4j:support event="onchange" action="#{ControleForn.cod_Cid}" immediate="true"/>
                        </rich:comboBox>
                        Email
                        <easy:inputEmail validatorMessage="email invalido" value="#{ControleForn.fornecedor.email_Fornecedor}"/>
                    </h:panelGrid>
                    <h:commandButton value="Cadastrar" action="#{ControleForn.cadForn}"/>
                    <a4j:commandButton value="Limpar" immediate="true" action="#{ControleForn.limparTfForn}" styleClass="botoes"/>
                </fieldset>
            </h:form>
        </body>
    </html>
</f:view>
//manager bean
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.oriom.CotacaoWeb.controle;

import br.com.oriom.CotacaoWeb.auxiliar.Messagens_Tela;
import br.com.oriom.CotacaoWeb.dao.DaoAuxiliar;
import br.com.oriom.CotacaoWeb.dao.Dao_Fornecedor;
import br.com.oriom.CotacaoWeb.dao.Dao_FornecedorImp;
import br.com.oriom.bean.BeanCidade;
import br.com.oriom.bean.Fornecedor_Bean;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.SelectItem;

/**
 *
 * @author suporte
 */
public class ControleFornecedor {

    private Fornecedor_Bean fornecedor;
    private List<Fornecedor_Bean> listaForn;
    private List<String> listaItens;
    private String cidade;

    public ControleFornecedor() {
        setFornecedor(new Fornecedor_Bean());

    }

    @Override
    public String toString() {
        return this.cidade;
    }

    public List listaCidades() {
        Messagens_Tela info = new Messagens_Tela();
        SelectItem item;
        try {
            DaoAuxiliar daoAux = new DaoAuxiliar();
            setListaItens(daoAux.retornaCidade());
        } catch (SQLException ex) {
            info.msgTela(ex.getMessage());
        } catch (ClassNotFoundException ex) {
            info.msgTela(ex.getMessage());
        } catch (Exception ex) {
            info.msgTela(ex.getMessage());
        }
        return getListaItens();
    }

    public String novoForn() {
        Messagens_Tela info = new Messagens_Tela();
        try {
            DaoAuxiliar daoAux = new DaoAuxiliar();
            setListaItens(daoAux.retornaCidade());
        } catch (SQLException ex) {
            info.msgTela(ex.getMessage());
        } catch (ClassNotFoundException ex) {
            info.msgTela(ex.getMessage());
        } catch (Exception ex) {
            info.msgTela(ex.getMessage());
        }
        return "cadforn";
    }

    public int cod_Cid() {
        Messagens_Tela info = new Messagens_Tela();
        System.out.println("cheguei" + getCidade().toString());
        try {
            DaoAuxiliar daoA = new DaoAuxiliar();
            getFornecedor().setCodigo_cidade(daoA.codCid(getCidade()));
            System.out.println(getFornecedor().getCodigo_cidade());
        } catch (SQLException ex) {
            info.msgTela(ex.getMessage());
        } catch (ClassNotFoundException ex) {
            info.msgTela(ex.getMessage());
        } catch (Exception ex) {
            info.msgTela(ex.getMessage());
        }
        return getFornecedor().getCodigo_cidade();
    }

    public String cadForn() {
        Messagens_Tela info = new Messagens_Tela();
        try {
            System.out.println(getCidade());
            Dao_Fornecedor daof = new Dao_FornecedorImp();
            info.msgTela(daof.cadastraFornecedor(getFornecedor()));
        } catch (SQLException ex) {
            info.msgTela(ex.getMessage());
        } catch (ClassNotFoundException ex) {
            info.msgTela(ex.getMessage());
        } catch (Exception ex) {
            info.msgTela(ex.getMessage());
        }
        limparTfForn();
        return "cadforn";
    }

    public String deletaForn() {
        Messagens_Tela info = new Messagens_Tela();
        try {
            Dao_Fornecedor daoF = new Dao_FornecedorImp();
            info.msgTela(daoF.deletaFornecedor(getFornecedor()));
        } catch (SQLException ex) {
            info.msgTela(ex.getMessage());
        } catch (Exception ex) {
            info.msgTela(ex.getMessage());
        }

        return "pesqforn";
    }

    public String buscaForn() {
        return "pesqforn";
    }

    public List<Fornecedor_Bean> pesqFornecedor() {
        Messagens_Tela info = new Messagens_Tela();
        try {
            Dao_Fornecedor daoF = new Dao_FornecedorImp();
            setListaForn(daoF.forneID(getFornecedor()));
        } catch (SQLException ex) {
            info.msgTela(ex.getMessage());
        } catch (ClassNotFoundException ex) {
            info.msgTela(ex.getMessage());
        } catch (Exception ex) {
            info.msgTela(ex.getMessage());
        }
        return getListaForn();
    }

    public String updateForn() {
        return "upforn";
    }

    public String atuForn() {

        return "pesqforn";
    }

    public String limparTfForn() {
        setFornecedor(new Fornecedor_Bean());
        return "cadforn";
    }

    /**
     * @return the fornecedor
     */
    public Fornecedor_Bean getFornecedor() {
        return fornecedor;
    }

    /**
     * @param fornecedor the fornecedor to set
     */
    public void setFornecedor(Fornecedor_Bean fornecedor) {
        this.fornecedor = fornecedor;
    }

    /**
     * @return the listaForn
     */
    public List<Fornecedor_Bean> getListaForn() {
        return listaForn;
    }

    /**
     * @param listaForn the listaForn to set
     */
    public void setListaForn(List<Fornecedor_Bean> listaForn) {
        this.listaForn = listaForn;
    }

    /**
     * @return the cidade
     */
    public String getCidade() {
        return cidade;
    }

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

    /**
     * @return the listaItens
     */
    public List<String> getListaItens() {
        return listaItens;
    }

    /**
     * @param listaItens the listaItens to set
     */
    public void setListaItens(List<String> listaItens) {
        this.listaItens = listaItens;
    }
}
//trecho da dao que popula lista
 public List<String> retornaCidade() throws SQLException{
        Connection conex = null;
        PreparedStatement pst = null;
        ResultSet rst = null;

        String query = "SELECT * FROM cidades";
        conex = this.conn;

        try {
            pst = conex.prepareStatement(query);
            rst = pst.executeQuery();
            List<String> lista = new ArrayList<String>();

            while (rst.next()) {
                String cidade = rst.getString(2);
                lista.add( cidade);
            }
            return lista;

        } finally {
            Fabrica_Conexao.close(rst, pst, conex);
        }

    }
alves.Felipe

tenta trocar essa parte:

<rich:comboBox id="listacid" value="#{ControleForn.cidade}" suggestionValues="#{ControleForn.listaItens}" directInputSuggestions="true" binding="#{ControleForn.cidade}" defaultLabel="esclha a cidade"> <a4j:support event="onchange" action="#{ControleForn.cod_Cid}" immediate="true"/> </rich:comboBox>
por essa: <a4j:region> <rich:comboBox id="listacid" value="#{ControleForn.cidade}" suggestionValues="#{ControleForn.listaItens}" directInputSuggestions="true" binding="#{ControleForn.cidade}" defaultLabel="esclha a cidade"> <a4j:support event="onchange" action="#{ControleForn.cod_Cid}" ajaxSingle="true"/> </rich:comboBox> </a4j:region>
ou ainda usar o <f:selectItems value="#{ControleForn.listaItens}" />

R

Cara vc conhece e é muito,deu certim.

R

O galera me entusiamei cedo,agora ta dando erro de conversao,alguem sabe de um material para estudar o rich e o ajax,vi o doc no site mais fala mais sobre o visual.

Caused by: java.lang.IllegalArgumentException: Cannot convert Belo Horizonte of type class java.lang.String to class javax.faces.component.UIComponent
Criado 26 de janeiro de 2010
Ultima resposta 31 de jan. de 2010
Respostas 13
Participantes 3