1

我有一个加载用户并允许我将角色分配给该特定用户的 JSF 页面。Backing BeanAssignRolesBean@RequestScoped,我希望它保持不变。然而,这是我的问题......

当表单提交时,它会调用AssignRolesBean.execute(). 然后返回确认页面的路径。在此确认页面上,我想显示将分配哪些新角色以及将删除哪些角色。但是,我无法在确认页面上加载用户。

在初始的 AssignRoles 页面上,用户 ID 是使用 GET 参数设置的。然后将其作为h:inputHidden元素添加到页面上。它确实被提交了。但是,同样,在下一页上,未设置 userId(加载用户)。有什么方法可以保留 RequestScope 而不必将 userId 存储在 SessionMap 中?有人告诉我,使用隐藏输入将允许您跨页面获取数据。但是,我遇到了麻烦。

4

2 回答 2

1

如果你开发 jsf2 应用程序,你可以使用 flash 范围来传递参数。有关 Flash 范围的更多信息,您可以查看学习 JSF2:使用 Flash 范围

或者您可以将参数放入会话映射中

获取 sessionMap 的代码片段:

FacesContext.getCurrentInstance().getExternalContext().getSessionMap()
于 2011-04-29T14:33:38.353 回答
0

将以下内容添加到您的视图中以对 GET 请求执行操作:

<f:metadata>
    <f:event type="preRenderView" listener="#{bean.init}" />
</f:metadata>

public void init() {
    // Request parameters which are set by h:inputHidden, @ManagedProperty
    // or f:viewParam are available here.
    // You can just do e.g:
    this.user = userService.find(userId);
}
于 2011-04-21T21:33:38.660 回答