Utilizar um EJB no Converter JSF [RESOLVIDO]

4 respostas
jrfercar

Olá,
Estou com um problema para injetar um dao em um converter, por meio do ejb.
A injeção ocorre perfeitamente quando injeto no ManagedBean, porém no converter não funciona.

Aguém tem alguma dica de como devo proceder.

Segue abaixo o código do meu converter.

import br.mycomerce.model.dao.interfaces.ContinenteDao;
import br.mycomerce.model.persistence.Continente;
import javax.ejb.EJB;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

/**
 *
 * @author José Ricardo
 */
@FacesConverter(value = "continenteConverter")
public class ContinenteConverter implements Converter {

[b]    @EJB
    private ContinenteDao continenteDAO;[/b]
    
    @Override
    public Object getAsObject(FacesContext fc, UIComponent uic, String string) {
        Continente continente = continenteDAO.pesqParam("Select c From Continente c Where nome = '" + string + "'");
        return continente;
    }

    @Override
    public String getAsString(FacesContext fc, UIComponent uic, Object o) {
        Continente continente = new Continente();
        continente = (Continente) o;
        return continente.getNome();
    }
}

Na home page, eu chamo o converter assim

<p:autoComplete value="#{cadastroDeLogradouroBean.continente}"  
                                        completeMethod="#{cadastroDeLogradouroBean.completeContinente}"  
                                        var="continente" itemLabel="#{continente.nome}"
                                        itemValue="#{continente}" [b]converter="continenteConverter"[/b]/>

4 Respostas

R

Se desse pra botar um Spring ai ficava facinho:
http://blog.jdevelop.eu/2008/07/06/access-the-spring-applicationcontext-from-everywhere-in-your-application/

jrfercar

Não existe outra possibilidade que seja a não utilização do Spring?

F

você pode fazer assim

no faces-config

<managed-bean>
	   <managed-bean-name>continenteConverter</managed-bean-name>
	   <managed-bean-class>br.com.ContinenteConverter</managed-bean-class>
	   <managed-bean-scope>request</managed-bean-scope>
	</managed-bean>

e na view colocar:

converter="#{continenteConverter }"
jrfercar

Beleza, Obrigadão, Deu certo.

Fiz as alterações conforme você me sugeriu e deu certo.

Valeu.

Criado 27 de junho de 2011
Ultima resposta 10 de nov. de 2011
Respostas 4
Participantes 3