Acessando um método com JSF

3 respostas
M

Olá pessoal, não estou conseguindo chamar o método excluir (h:commandLink) que está dentro de um Bean através de um h:form com h:dataTable, segue o código. Agradeço muito a ajuda!

<body>
        <h:form>//value = propriedade do backbean que retorna uma lista. var = nome referenciar itens da lista
            <h:dataTable value="#{agenda.dados}" var="agenda" border="1">
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="#{msgs.Cod}"/>
                    </f:facet>
                    <h:outputText value="#{agenda.cod}"/>
                </h:column>
                <h:column>
                <f:facet name="header">
                    <h:outputText value="#{msgs.Titulo}"/>
                </f:facet>
                <h:outputText value="#{agenda.titulo}"/>
            </h:column>
                <h:column>
                <f:facet name="header">
                    <h:outputText value="#{msgs.Link}"/>
                </f:facet>
                <h:commandLink value="Excluir" action="#{agenda.exclui}" >
                    <f:setPropertyActionListener target="#{agenda.cod}" value="#{agenda.cod}" /> 
                </h:commandLink>          
            </h:column>
        </h:dataTable>
        </h:form>
    </body>
</f:view>
</html>
meu Bean:
public class AgendaBean {
    private Connection conn;
    public void abrirConexao()
            throws SQLException,
            NamingException,
            ClassNotFoundException
    {
        if (conn != null) return;
        Class.forName("org.gjt.mm.mysql.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://localhost/bdlivros","root","senha123");
    }
    
    public Result getDados()
            throws SQLException,
            NamingException,
            ClassNotFoundException
    {
        try{
            abrirConexao();
            Statement stmt = conn.createStatement();
           // stmt.executeUpdate("INSERT INTO livros(Cod, Titulo) VALUES (12333, 'Weeeb') "); esta inserindo ok!
            ResultSet result = stmt.executeQuery("SELECT * from livros");
            return ResultSupport.toResult(result);
        }finally{
            fecharConexao();
        }
    }

    // Verificar como remover livros
    public void exclui(String cod)
            throws SQLException,
            NamingException,
            ClassNotFoundException{
    PreparedStatement pst = null;
    {
            try{
            abrirConexao();
        pst = conn.prepareStatement("DELETE FROM livros WHERE cod=?");   
        pst.setString(1, cod);   
        pst.executeUpdate();   
        //return ResultSupport.toResult(result);
        }finally{
            fecharConexao();
        }
    }
    }
    public void fecharConexao() throws SQLException{
        if (conn == null) return;
        conn.close();
        conn = null;
    }
}

Erro:

type Exception report

message

descriptionThe server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: #{agenda.exclui}: javax.el.MethodNotFoundException: Method not found: {cod=1, titulo=Algoritmos}.exclui()
root cause

javax.faces.FacesException: #{agenda.exclui}: javax.el.MethodNotFoundException: Method not found: {cod=1, titulo=Algoritmos}.exclui()
root cause

javax.faces.el.MethodNotFoundException: javax.el.MethodNotFoundException: Method not found: {cod=1, titulo=Algoritmos}.exclui()
root cause

javax.el.MethodNotFoundException: Method not found: {cod=1, titulo=Algoritmos}.exclui()
note The full stack traces of the exception and its root causes are available in the Sun Java System Application Server 9.1_01 logs.

3 Respostas

acromo

Como esta o mapeamento de sua action no faces-config

maxmustang

anotou a sua classe como @ManagedBean?

M

max e acromo, desculpa mas sou iniciante no jsf…

o faces-config está padrão:



agenda
br.com.integrator.cap15.jsf.AgendaBean
session

Se puder me dar um exemplo, muito obrigado.

Criado 18 de outubro de 2010
Ultima resposta 18 de out. de 2010
Respostas 3
Participantes 3