我是 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 中,我将只有一个操作来处理所有用户交互)。
PS 我知道有解决方案可以在 getter 方法中填充 List,但我阅读了 BalusC 的一篇文章,建议我们不要这样做......