我开始使用Inject
而不是ManagedProperty
. 我做了一些测试,在其中一个测试中,我将一个ViewScoped
bean ( Bean1
) 注入到另一个Bean2
具有相同范围的 ( ) 中:
@Inject
private Bean1 bean1;
Bean1 有一个item
代表艺术家的变量,而艺术家有许多不同的字段,例如:名称、专辑列表等。
在 Bean2 中,我需要访问 Bean1 中的项目:
Artist artist = bean1.getItem();
当我在该行上设置断点以查看里面的内容Bean1
时,我可以看到变量item
,但是当我展开时item
,没有设置任何字段。
如果我尝试使用调试器进入该getItem()
方法,我会收到以下消息:
Thread http-listener-1(2) stopped at beans.Bean1$Proxy$_$$_WeldClientProxy.getItem - compiled without debug info.
使用调试器降低一行,然后查看artist
变量,所有字段都已设置为正确的值。这个怎么可能?之前一切都是空的。
Edit1:如果我替换Inject
为ManagedProperty
、 更改javax.faces.view.ViewScoped
为javax.faces.bean.ViewScoped
并在调试方面执行相同的步骤,我可以看到item
设置了中的字段。我也可以步入方法getItem()
。