Pregunta

sigo el doc de Weld

en la sección 4.11. El objeto InjectionPoint

Hay un ejemplo muy interesante acerca de cómo obtener el parámetro HTTP usando CDI

pero copiar y pegar el código en NetBeans, todo se compila, pero tiene un error de implementación

Causado por: org.jboss.weld.exceptions.DeploymentException: Weld-001 408 Punto de inyección tiene dependencias insatisfechas. punto de inyección: parámetro 1 de java.lang.String com.test.HttpParamProducer.getParamValue (javax.enterprise.inject.spi.InjectionPoint, javax.servlet.ServletRequest); Calificadores: [@ javax.enterprise.inject.Default ()]

cómo resolver este problema ???

public class HttpParamProducer {

   @HttpParam("")
   @Produces
   String getParamValue(
           InjectionPoint ip, ServletRequest request) {

      return request.getParameter(ip.getAnnotated().getAnnotation(HttpParam.class).value());

   }
}
¿Fue útil?

Solución 2

parece que después de dos años, esta cuestión todavía está interesada

Este es un breve venida de la especificación CDI, donde no se requiere el contenedor para exponer HttpServletRequest como frijol inyectable

aquí es un trabajo razonable en torno

@WebListener 
public class HttpServletRequestProducer implements ServletRequestListener {
    private final static ThreadLocal<HttpServletRequest> holder = new ThreadLocal<HttpServletRequest>();

    @Override
    public void requestDestroyed(ServletRequestEvent sre) {
        holder.remove();
    }

    @Override
    public void requestInitialized(ServletRequestEvent sre) {
        holder.set((HttpServletRequest)sre.getServletRequest());
    }

    @Produces @RequestScoped HttpServletRequest get() {
        return holder.get();
    }
}

Ahora @Inject HttpServletRequest va a trabajar como se esperaba

feliz de codificación

Otros consejos

se inyecta cada parámetro en un método de productor, y ninguno de sus granos (incluyendo productores) proporciona la ServletRequest tipo API para satisfacer este punto de inyección.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top