我想知道哪种方式更受欢迎:通过完整的classname.property访问支持bean变量,还是通过producer方法直接访问属性名称?特别是如果项目变得更大,有很多课程,服务,外墙等。
@Named
public Service {
List<Customer> getCustomers();
}
use:
<h:dataTable value="#{service.customers}" />
或
public Service {
@Produces
@Named
List<Customer> getCustomers();
}
use:
<h:dataTable value="#{customers}" />
我的第一个好处是,如果我必须更改jsf,我总是知道由于完全限定名称我必须修改哪个类。
这可能是第二种方式的缺点,但相比之下,在许多服务和类的情况下更好地阅读。
你会有什么专家说的?
答案 0 :(得分:0)
IMO,我选择第一条路线。重构也更容易(假设您的IDE也将在JSF页面中重命名)。虽然,老实说,我希望这是个人风味的东西。
使用service.property的另一个好处是能够修改属性并将其反映在UI上。如果您正在使用生产者,则每个范围仅调用该生产者一次,因为始终调用getter(另一个性能权衡)。有很多方法可以用来做事情,无论做什么都很好,就这样使用。
答案 1 :(得分:0)
我会选择第一个选项,因为我总是希望引用与页面相关的Managed Bean。我相信这是一个更容易理解的代码。