【发布时间】:2012-01-05 13:57:49
【问题描述】:
我有一个由 spring 管理的 backing bean,它的范围是 view 我有一个显示所有用户的用户页面 我想将用户变量列表传递给数据表,我想在页面构建时初始化这个变量(只要我还在页面中就使用这个变量),我对最好的方法感到困惑要初始化用户列表,我有 3 种方法:
通过构造函数初始化:
@Component("user")
@Scope("view")
public class MyBean {
private List<User> usersList;
public MyBean() {
usersList=userService.getUsers();
}
}
通过preRender 事件初始化:
@Component("user")
@Scope("view")
public class MyBean {
private List<User> usersList;
public void preRender(ComponentSystemEvent event){
if(usersList!=null)
usersList=userService.getUsers();
}
}
通过@PostConstruct
初始化@Component("user")
@Scope("view")
public class MyBean {
private List<User> usersList;
@PostConstruct
public void init() {
usersList=userService.getUsers();
}
}
请告知在视图范围的情况下初始化的最佳方法是什么,我想初始化一次变量,并在数据表中使用完全相同的变量,只要我仍在同一页面中。
【问题讨论】:
-
实际上你只有两个选项 - 构造函数中的初始化不会起作用,因为
userService将在创建 bean 对象后注入。我通常在@PostConstruct 方法中这样做,但我没有使用 Spring。
标签: spring jakarta-ee jsf-2