我在一个bean中使用一个属性作为另一个bean中的托管属性。
我面临的问题是改变了源bean中的属性,目标bean的托管属性 NOT 得到更新。如果Java使用引用而不是在内存中创建新对象,那么这不应该发生,但确实如此。
我的bean都是会话范围的。这会影响房产的注入吗?这是否意味着视图中的更改 NOT 如果bean是会话范围的,则初始化注入?即使这样,它也反对用户BalusC在这个答案的评论中提出的参考想法。
答案 0 :(得分:1)
显然,您直接引用目标bean的属性而不是目标bean本身。
以下确实是错误的:
@ManagedProperty("#{otherBean.property}")
private String otherBeanProperty;
String
是不可变的,你基本上是复制属性。这不是可供参考的。
相反,你应该这样做:
@ManagedProperty("#{otherBean}")
private OtherBean otherBean;
然后在任何source bean的方法中通过getter获取所需的属性。