我想知道是否更改EL解析器以便bean可以在jsf中使用公共字段可能会导致代理问题? [这就是为什么它不复制。]所有托管bean字段必须在框架中是私有的,因为这是EL解析器如何做事情。然而,它有点麻烦,而且大部分时间都没用。
@Named
@RequestScoped
public class myBean{
public int age;
}
那么它会导致代理试图拦截事物或诸如此类的问题吗?
this question中的这个人显然改变了el resolver,因此它可行
答案 0 :(得分:1)
不幸的是,它会混乱CDI。
为什么呢?因为当代理bean时,公共字段访问是不可能的。在启动期间Weld
,您将收到定义错误:
WELD-000075: Normal scoped managed bean implementation class has a public field ...
它仅适用于非代理范围(@Singleton
和@Dependant
)。
我同意它有点麻烦,有时看起来毫无用处,所以你有两个解决方案:
但它们都不是完美的。