1

我在两个 @ViewScoped 托管 Bean 之间的通信存在巨大问题。以下清单显示了我这样做的方式。UserAddEditMB 被注入到 UserSearchMB 并在用户单击带有 onAdd 操作的按钮后,它调用 UserAddEditMB init 方法。最后,我的第二种形式有导航规则,但 u1 和 u2 为空。

这是在两个 @ViewScoped Managed bean 中执行通信的好方法吗?

@ManagedBean
@ViewScoped
public class UserSearchMB {

@ManagedProperty(value ="#{userAddEditMB}")
private UserAddEditMB userAddEditMB;

public void onAdd(){
    userAddEditMB.init(String param1, String param2);
    return "userAddEdit";
}
...
}


@ManagedBean
@ViewScoped
public class UserAddEditMB {

private String u1;
private String u2;

public void init(String param1, String param2){
    this.u1 = param1;
    this.u2 = param2;
}
....
}
4

1 回答 1

-1

我发布作为答案,因为评论太小。您可以尝试从 UserAddEditMB 获取 UserSearchMB:

FacesContext context = FacesContext.getCurrentInstance();
UserSearchMB test= (UserSearchMB) context.getApplication().evaluateExpressionGet(context, "#{userSearchMB}", UserSearchMB .class);
于 2013-04-23T16:33:29.693 回答