Hi,

BeanProvider just works for managed beans as it just "provide beans" from
the underlying CDI container.

If you would like to do injection in a unmanaged object, you can do the
following:

MyUnmanagedBean a = new MyUnmanagedBean();
BeanProvider.injectFields(a);

Regards,
Thomas


2016-07-20 9:13 GMT+02:00 rickqinj <[email protected]>:

> Hello,The BeanProvider makes me confused for a few days. Could anyone help
> me out?The problem in my case is that I cannot get an instance of a
> non-managed class by BeanProvider.getContextualReference() method.I listed
> my case as following:
> // DeltaSpike 1.4.2, Weld 1.1.31, CDI 1.0-SP4
> //--Class A--public class A {    //member fields
>     private B b;    //Constructor with parameters.    public A(String p1,
> String p2, String p3) {        //...just do something.
>     }    public B getInstanceOfB() {        b =
> BeanProvider.getContextualReference(B.class, false);        return b;
>     }
> }
> //--Class Caller--@Named
> public class Caller {    //...    public void action() {        A a = new
> A("s1", "s2", "s3");        B b = a.getInstanceOfB(); //<-------- I cannot
> get an instance of B.    }    //...
> }
> The class A is a non-managed bean, and Caller is managed.
> Am I do wrong with BeanProvider? What should I do to get the instance of
> B?Ps. I cannot make the class A managed, it may cause refactoring of all
> project. (~that's awful~)And according to the error log, it seems that a
> missing InjectionPoint may caused this problem.
> Many thanks for your help!
>
>
>

Reply via email to