使用JSF RequestScoped Bean进行确认页面

时间:2011-04-21 21:05:55

标签: java jsf backing-beans

我有一个加载用户的JSF页面,允许我将角色分配给该特定用户。 Backing Bean AssignRolesBean@RequestScoped,我希望它仍然如此。但是,这是我的问题......

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

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

2 个答案:

答案 0 :(得分:1)

如果您开发jsf2 app,则可以使用flash scope传递参数。 有关闪存范围的更多信息,请查看Learning JSF2: Using Flash scope

或者您可以将参数放入会话地图

获取sessionMap的代码片段:

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

答案 1 :(得分: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);
}