使用 public 字段,它会弄乱代理吗?
Using public field, will it mess with the proxies?
我想知道更改 EL 解析器以便 bean 可以使用 jsf 中的 public 字段是否会导致代理出现问题? [这就是它不是重复项的原因。] 所有托管 bean 字段在框架中都必须是私有的,因为这就是 EL 解析器做事的方式。然而,它有点笨重,而且大多数时候看起来毫无用处。
@Named
@RequestScoped
public class myBean{
public int age;
}
那么它会导致代理试图拦截东西或诸如此类的问题吗?
this question 中的这个人显然改变了 el 解析器所以它是可行的
不幸的是,它会干扰 CDI。
为什么?因为代理 bean 时无法访问 public 字段。使用 Weld
在启动期间你会得到一个定义错误:
WELD-000075: Normal scoped managed bean implementation class has a public field ...
它仅适用于非代理范围(@Singleton
和 @Dependant
)。
我同意这有点麻烦,有时看起来没用,所以你有两个解决方案:
- 使用IDE自动生成它们。
- 使用 lombok 项目。
但其中 none 个是完美的。
我想知道更改 EL 解析器以便 bean 可以使用 jsf 中的 public 字段是否会导致代理出现问题? [这就是它不是重复项的原因。] 所有托管 bean 字段在框架中都必须是私有的,因为这就是 EL 解析器做事的方式。然而,它有点笨重,而且大多数时候看起来毫无用处。
@Named
@RequestScoped
public class myBean{
public int age;
}
那么它会导致代理试图拦截东西或诸如此类的问题吗?
this question 中的这个人显然改变了 el 解析器所以它是可行的
不幸的是,它会干扰 CDI。
为什么?因为代理 bean 时无法访问 public 字段。使用 Weld
在启动期间你会得到一个定义错误:
WELD-000075: Normal scoped managed bean implementation class has a public field ...
它仅适用于非代理范围(@Singleton
和 @Dependant
)。
我同意这有点麻烦,有时看起来没用,所以你有两个解决方案:
- 使用IDE自动生成它们。
- 使用 lombok 项目。
但其中 none 个是完美的。