我有一个加载用户的JSF页面,允许我将角色分配给该特定用户。 Backing Bean AssignRolesBean
是@RequestScoped
,我希望它仍然如此。但是,这是我的问题......
表单提交时,会调用AssignRolesBean.execute()
。然后返回确认页面的路径。在此确认页面上,我想显示将分配哪些新角色以及将删除哪个角色。但是,我在确认页面上加载用户时遇到了问题。
在初始的AssignRoles页面上,使用GET参数设置userId。然后将其添加为页面上的h:inputHidden
元素。它确实被提交了。但是,再次,在下一页上,未设置userId(加载用户)。有什么办法可以保留RequestScope而不必将userId存储在SessionMap中吗?我被告知使用隐藏输入将允许您跨页面获取数据。但是,我遇到了麻烦。
答案 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);
}