Question

Je suis le doc de Weld

dans la section 4.11. L'objet InjectionPoint

Il y a un exemple très intéressant sur la façon d'obtenir le paramètre http en utilisant CDI

mais je copier-coller le code dans NetBeans, tout est compilé, mais a une erreur de déploiement

causés par: org.jboss.weld.exceptions.DeploymentException: WELD-001408 point d'injection a des dépendances non satisfaites. Point d'injection: paramètre 1 de java.lang.String com.test.HttpParamProducer.getParamValue (javax.enterprise.inject.spi.InjectionPoint, javax.servlet.ServletRequest); Qualifiers: [@ javax.enterprise.inject.Default ()]

comment résoudre ce problème ???

public class HttpParamProducer {

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

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

   }
}
Était-ce utile?

La solution 2

il semble que, après deux ans, cette question est toujours intéressé

est une courte venue de la spécification CDI, où il ne nécessite pas le récipient pour exposer HttpServletRequest sous forme de graines injectable

ici est un travail raisonnable autour

@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();
    }
}

@Inject HttpServletRequest va fonctionner comme prévu

heureux de codage

Autres conseils

est injecté chaque paramètre sur une méthode de production, et aucun de vos haricots (y compris les producteurs) fournit le type API ServletRequest pour satisfaire ce point d'injection.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top