[jsf + spring + ibatis] No SqlMapClient specified

1 resposta
E

Ola a todos,
Aqui na empresa estamos fazendo alguns testes, criando uma pequena aplicação utilizando JSF, Spring e iBatis, porem não conseguimos descobrir a solução deste erro:

Segue o applicationContext.xml:

DAO:

public interface UFDAO {
    public UF get(int id);
    public void insert(UF uf);
    public void delete(int id);
    public void update(UF uf);
    public List getAll();
}

Implementação do DAO(O BaseDAO somente estende SqlMapClientTemplate):

public class UFDAOImpl extends BaseDAO implements UFDAO {  

   
    public UFDAOImpl(){
        
    }

    public UF get(int id) {
        return (UF) queryForObject("uf.get", id);
    }

    public void insert(UF uf) {
    
            insert("uf.insert", uf);
    
    }

    public void delete(int id) {
        delete("uf.delete", id);
    }
 
    public void update(UF uf) {
        update("uf.update", uf);
    }

    public List getAll() {
        return queryForList("uf.getAll", null);
    }
    
    public int getNexId() {
        try {
            return ((Integer) queryForObject("uf.getLastId", null)) + 1;
        } catch  (NullPointerException e) {
            return 1;
        }
    }
}

O Managed Bean:

public class CadastroUF{  
    private UF uf;
    private UFDAO ufDAO;
    
    public CadastroUF() {
        uf = new UF();
        ufDAO = new UFDAOImpl();        
    }        
      
    public UF getUf(){
        return uf;
    }
    
    public void setUf(UF uf){
        this.uf = uf;
    }
    
    public String insert(){
        ufDAO.insert(uf);
        uf = new UF(); 
        return "";
    }
    
    public String delete(){
        ufDAO.delete(uf.getId());
        uf = new UF();
        return "";
    }
    
    public String update(){
        ufDAO.update(uf);
        return "";
    }
    
    public UF find(){
        return ufDAO.get(uf.getId());
    }
    
    public List all(){
        return ufDAO.getAll();
    }   
}

Desde já, agradeço. :smiley:

1 Resposta

JaqueCel

Olá a todos!
Passei por essa mesma dificuldade e resolvi postar a solução para quem vier a precisar.

Quando se usa Spring + Ibatis é necessário ter no faces-config.xml o seguinte trecho:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/JSF/Configuration">
    
    <application>
        <el-resolver>org.springframework.web.jsf.el.DelegatingFacesELResolver</el-resolver>
    </application>
    ....

</faces-config>
Essa linha de comando é indispensável, pois permite que se possa referenciar os beans do spring no faces-config.xml da seguinte forma:
...
<managed-bean>  
       ...      
        <managed-property>
            <property-name>CadastroUF</property-name>
            <property-class>caminhoclasse.CadastroUF</property-class>
            <value>#{UFDAOImpl}</value>  //bean que está no applicationContext.xml
        </managed-property>
</managed-bean>
...

Esse código só pode ser usado a partir de JSF 1.2 e Spring a partir de 2.1

Fonte: http://www.jroller.com/javamail/entry/integrando_jsf_12_com_spring

Criado 30 de julho de 2007
Ultima resposta 5 de jun. de 2008
Respostas 1
Participantes 2