dataTable do jsf

12 respostas
erasmo_tec

Boa tarde, alguem sabe porque esse erro acontece?..

javax.servlet.ServletException: /listar.jsp(31,20) '#{item.codigoDoEscob}' Property 'codigoDoEscob' not found on type santander.historico.ArquivoHistorico
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)

12 Respostas

vinihds

posta os codigos…talvez de para te ajudar.

erasmo_tec

vamos pelo inicio então, esta é a classe principal

public class ArquivoHistorico {
    private static String codigoDoEscob;
    private static String operacao;
    private static String cpfCnpj;
    private static String dataDoAcionamento;
    private static String statusDoAtend;
    private static String ddd;
    private static String telefoneContatado;
    private static String codigoDeClassificacaoDosStatus;

    public ArquivoHistorico() {
    
    }
    

    public static String getCodigoDeClassificacaoDosStatus() {
        return codigoDeClassificacaoDosStatus;
    }

    public static void setCodigoDeClassificacaoDosStatus(String codigoDeClassificacaoDosStatus) {
        ArquivoHistorico.codigoDeClassificacaoDosStatus = codigoDeClassificacaoDosStatus;
    }

    public static String getCodigoDoEscob() {
        return codigoDoEscob;
    }

    public static void setCodigoDoEscob(String codigoDoEscob) {
        ArquivoHistorico.codigoDoEscob = codigoDoEscob;
    }
     
    public static String getCpfCnpj() {
        return cpfCnpj;
    }

    public static void setCpfCnpj(String cpfCnpj) {
        ArquivoHistorico.cpfCnpj = cpfCnpj;
    }

    public static String getDataDoAcionamento() {
        return dataDoAcionamento;
    }

    public static void setDataDoAcionamento(String dataDoAcionamento) {
        ArquivoHistorico.dataDoAcionamento = dataDoAcionamento;
    }

    public static String getDdd() {
        return ddd;
    }

    public static void setDdd(String ddd) {
        ArquivoHistorico.ddd = ddd;
    }

    public static String getOperacao() {
        return operacao;
    }

    public static void setOperacao(String operacao) {
        ArquivoHistorico.operacao = operacao;
    }

    public static String getStatusDoAtend() {
        return statusDoAtend;
    }

    public static void setStatusDoAtend(String statusDoAtend) {
        ArquivoHistorico.statusDoAtend = statusDoAtend;
    }

    public static String getTelefoneContatado() {
        return telefoneContatado;
    }

    public static void setTelefoneContatado(String telefoneContatado) {
        ArquivoHistorico.telefoneContatado = telefoneContatado;
    }

}

este é o DAO que popula minha lista

public List<ArquivoHistorico> pegaTodoHistoricoCorrigido() throws SQLException, ClassNotFoundException {
        List<ArquivoHistorico> toReturn = new LinkedList<ArquivoHistorico>();
        ResultSet rs = pegaDeclaracao().executeQuery("select * from historico_corrigido");
        while (rs.next()) {
            ArquivoHistorico arquivoHistorico = new ArquivoHistorico();
            populaArquivo(arquivoHistorico, rs);
            toReturn.add(arquivoHistorico);

            System.out.println(arquivoHistorico.getCodigoDoEscob() +
                    "|" + arquivoHistorico.getOperacao() +
                    "|" + arquivoHistorico.getCpfCnpj() +
                    "|" + arquivoHistorico.getDataDoAcionamento() +
                    "|" + arquivoHistorico.getStatusDoAtend() +
                    "|" + arquivoHistorico.getDdd() +
                    "|" + arquivoHistorico.getTelefoneContatado() +
                    "|" + arquivoHistorico.getCodigoDeClassificacaoDosStatus());
        }
        rs.close();
        return toReturn;

    }

    private void populaArquivo(ArquivoHistorico arquivoHistorico, ResultSet rs) throws SQLException {
        arquivoHistorico.setCodigoDoEscob(rs.getString("codigoDoEscob"));
        arquivoHistorico.setOperacao(rs.getString("operacao"));
        arquivoHistorico.setCpfCnpj(rs.getString("cpfCnpj"));
        arquivoHistorico.setDataDoAcionamento(rs.getString("dataDoAcionamento"));
        arquivoHistorico.setStatusDoAtend(rs.getString("statusDoAtend"));
        arquivoHistorico.setDdd(rs.getString("ddd"));
        arquivoHistorico.setTelefoneContatado(rs.getString("telefoneContatado"));
        arquivoHistorico.setCodigoDeClassificacaoDosStatus(rs.getString("codigoDeClassificacaoDosStatus"));

    }

este é meu bean que acessa a minha lista

LeituraArquivoHistoricoDAO leituraDAO = new LeituraArquivoHistoricoDAO();
    private List<ArquivoHistorico> arq;

    public List<ArquivoHistorico> getAllHistorico() throws SQLException, ClassNotFoundException {
        if (arq == null) {
            arq = leituraDAO.pegaTodoHistoricoCorrigido();
        //System.out.println(arq);
        }
        return arq;
    }

e esta é minha pagina JSP

<%@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"%>

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

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Históricos KG</title>
        
    </head>
    <body>               
        <f:view>
        
           
            <h2>Processar Arquivo de Históricos </h2>
            <h:dataTable var="item"  value="#{ProcessarHistoricoMB.allHistorico}"  border="3"  rows="25">
                <%--coluna do codigo do escob--%>
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="codigoDoEscob"/>
                    </f:facet>                                                                                                          
                    <h:outputText value="#{item.codigoDoEscob}"  />
                </h:column>   
                <%--coluna da operação--%>
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="operacao"/>
                    </f:facet>
                    <h:outputText value="#{item.operacao}"  />
                </h:column> 
                <%--coluna do cpfCnpj--%>
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="cpfCnpj"/>
                    </f:facet>
                    <h:outputText value="#{item.cpfCnpj}"  />
                </h:column> 
                <%--coluna data do acionamento--%>
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="dataDoAcionamento"/>
                    </f:facet>
                    <h:outputText value="#{item.dataDoAcionamento}"  />
                </h:column> 
                <%--status do atendimento--%>
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="statusDoAtend"/>
                    </f:facet>
                    <h:outputText value="#{item.statusDoAtend}"  />
                </h:column> 
                <%--ddd--%>
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="ddd"/>
                    </f:facet>
                    <h:outputText value="#{item.ddd}"  />
                </h:column> 
                <%--telefone contatado--%>
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="telefoneContatado"/>
                    </f:facet>
                    <h:outputText value="#{item.telefoneContatado}"  />
                </h:column> 
                <%--codigo de classificação--%>
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="codigoDeClassificacaoDosStatus"/>
                    </f:facet>
                    <h:outputText value="#{item.codigoDeClassificacaoDosStatus}"  />
                </h:column> 
            </h:dataTable>    
            <h:form>
                <h:commandButton value="Voltar" action="goback"/>
            </h:form>
            
            
            
            
            
        </f:view>
    </body>
</html>

estes são os meus codigos…

vinihds

cara, olhando por cima e nao achei nenhum erro …mas eu já tive uns problemas com List…e vc ta usando um obj q eu nao conheço…LinkedList

tenta usar desse modo:

public List pegaTodoHistoricoCorrigido() throws SQLException, ClassNotFoundException {

List toReturn = new ArrayListt();

ResultSet rs = pegaDeclaracao().executeQuery(“select * from historico_corrigido”);

while (rs.next()) {

ArquivoHistorico arquivoHistorico = new ArquivoHistorico();

arquivoHistorico.setCodigoDoEscob(rs.getString(“codigoDoEscob”));

arquivoHistorico.setOperacao(rs.getString(“operacao”));

arquivoHistorico.setCpfCnpj(rs.getString(“cpfCnpj”));

arquivoHistorico.setDataDoAcionamento(rs.getString(“dataDoAcionamento”));

arquivoHistorico.setStatusDoAtend(rs.getString(“statusDoAtend”));

arquivoHistorico.setDdd(rs.getString(“ddd”));

arquivoHistorico.setTelefoneContatado(rs.getString(“telefoneContatado”));

arquivoHistorico.setCodigoDeClassificacaoDosStatus(rs.getString(“codigoDeClassificacaoDosStatus”));

toReturn.add(arquivoHistorico);
}  
    rs.close();  
    return toReturn;  

}

e no seu bean … tenta instanciar seu list…
List arq=new ArrayList();

G
<h:dataTable var="item"  value="#{ProcessarHistoricoMB.allHistorico}"

vc tem q usar no value assim … value="#{seubean.nomedoseulist}"

no seu caso

<h:dataTable var="item"  value="#{ProcessarHistoricoMB.arq}"/>
erasmo_tec

tentei assim com o arq no meu value e a unica coisa que mudou foi o erro dizendo agora que a propriedade que esta faltando é o arq

javax.servlet.ServletException: /listar.jsp(25,12) '#{ProcessarHistoricoMB.arq}' Property 'arq' not found on type santander.historico.managedbean.ProcessarHistoricoMB
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)

tem alguma coisa que não esta deixando o dataTable reconhecer as propriedades da minha lista

G

primeiro vc tem q circundar seu table e todo e qql componente jsf dentro d um <h:form>

posta seu web.xml e seu faces-config.xml

erasmo_tec
faces-config
<?xml version='1.0' encoding='UTF-8'?>

<!-- =========== FULL CONFIGURATION FILE ================================== -->

<faces-config version="1.2" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
    <navigation-rule>
        <from-view-id>/welcomeJSF.jsp</from-view-id>
        <navigation-case>
            <from-outcome>gotoListar</from-outcome>
            <to-view-id>/listar.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>
    <managed-bean>
        <managed-bean-name>ProcessarHistoricoMB</managed-bean-name>
        <managed-bean-class>santander.historico.managedbean.ProcessarHistoricoMB</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>
</faces-config>

web-xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <context-param>
        <param-name>com.sun.faces.verifyObjects</param-name>
        <param-value>false</param-value>
    </context-param>
    <context-param>
        <param-name>com.sun.faces.validateXml</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>client</param-value>
    </context-param>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.faces</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>forwardToJSF.jsp</welcome-file>
        </welcome-file-list>
    </web-app>
G

mudando o escopo do seu mb pra session n funciona ?.. :?:

erasmo_tec

nem mudando o escopo para sessão funciona, criei outro projeto e mesmo assim não lista na tela, o metodo esta populando normalzinho por isso coloquei a saida no console pra verificar se o problema não estava ai, mas até a execução do metodo funciona

erasmo_tec

Ai galera consegui resolver este problema na epoca em que este post foi iniciado com auxilio do JavaServer Faces HTML Tags Reference que se encontra no site http://www.exadel.com/tutorial/jsf/jsftags-guide.html.

Esse link me ajudou bastante…

tnaires

erasmo_tec, já reparou que todos os getters e setters do seu bean estão marcados como static? Talvez seja esse o motivo do erro.

erasmo_tec

vi sim e ja foram corrigidos

Criado 18 de fevereiro de 2009
Ultima resposta 28 de mai. de 2009
Respostas 12
Participantes 4