对确认页面使用JSF RequestScoped Bean



我有一个JSF页面,它加载一个用户,并允许我将角色分配给那个特定的用户。支持Bean, AssignRolesBean@RequestScoped,我希望它保持这样。然而,这是我的问题…

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

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

如果你开发jsf2应用,你可以使用flash作用域来传递参数。有关flash作用域的更多信息,请参阅学习JSF2:使用flash作用域

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

获取sessionMap的代码片段:

FacesContext.getCurrentInstance().getExternalContext().getSessionMap()

将以下内容添加到视图中以对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);
}

相关内容

  • 没有找到相关文章

最新更新