viernes, 18 de marzo de 2011

Acceder EJB desde un JSF custom converter

La utilización de converters de JSF tiene un buen par de sitios para entenderla:

http://download.oracle.com/docs/cd/B31017_01/web.1013/b28967/web_val006.htm

http://facestutorials.icefaces.org/tutorial/converter-tutorial.html

Pero y que pasa si en el método getAsObject necesito acceder a recursos persistentes? (típicamente una db). Bueno, mi aplicación tiene una capa para ello, y resulta ser un EJB. Entonces debería inyectar el EJB al converter....

Un momento. Si puedo inyectar un EJB en un converter?... No. La especificació dice: "Only beans declared to be in request, session, or application scope are eligble for resource injection."

Entonces, hagamos al converter un managed bean para poder inyectarle el recurso necesario. Algo como esto:


@ManagedBean
@ApplicationScoped
public class SomethingConverter implements Converter {
@ManagedProperty
private ElRecurso elrecurso;
...


Y para utilizarlo:


<h:outputText value="#{SomethingBean.something}" converter="#{somethingConverter}" />


No estoy seguro, pero no funciona registrando el converter en el faces-config.xml, hay que escribirlo en el componente.

La solución fue encontrada en:

http://stackoverflow.com/questions/3630403/how-do-i-access-ejb-bean-when-inside-a-custom-converter

No hay comentarios:

Publicar un comentario