【发布时间】:2013-09-10 21:54:59
【问题描述】:
我是 JSF 的菜鸟,我正在尝试找出以下场景中最优雅的解决方案:
假设我有一个名为 UserMB 的用户管理 bean:
@ManagedBean
public class UserMB {
private User user;
private List<User> users;
// getters and setters here
public void addUser(User user){
// do add user logic here
}
public List<User> listAllUsers(){
// do list All users logic here
}
@PostConstruct
private void init(){
// populate List<user> users - for the listAllUsers scenario
}
}
假设我没有直接提交给 listAllUsers() 方法的表单,而是我想在打开页面 list-all-users.xhtml 时查看所有用户。
当我从 addUser.xhtml 访问托管 bean 时,将对 DB 执行查询以加载所有用户,因为 bean 不知道我是要使用 listAllUsers() 方法还是 addUser() 方法。
我应该将此功能拆分为 2 个托管 bean 吗?
因为如果是这样,我将不得不创建几个托管 bean 来处理“用户”业务(即,在 Struts2 中,我将只有一个操作来处理所有用户交互)。
附:我知道有解决方案可以在 getter 方法中填充 List,但我阅读了 BalusC 的一篇文章,建议我们不要这样做......
【问题讨论】: