我正在开发JSF 2 Web应用程序,并在页面之间使用隐式导航来指定结果值和更改URL值.我也有一些Ajax请求能够在某些页面中进行更改而无需提交所有内容.
例如,当我编辑用户的数据并保存更改时,我的问题就出现了.Managed Bean保存用户数据并返回String以导航到用户列表.正确保存用户后,FacesMessage在操作方法完成之前添加a .
按键
<p:commandButton value="#{msg.UPDATE}" action="#{manager.actionSave}"
ajax="false" />
Run Code Online (Sandbox Code Playgroud)
代码进入方法
FacesContext.getCurrentInstance().addMessage(clientId,
new FacesMessage(FacesMessage.SEVERITY_INFO, msg, msg));
Run Code Online (Sandbox Code Playgroud)
但是,即使我的<h:messages />主页面上有标签,也没有显示任何内容.
Bal*_*usC 10
问题症状表明,如果您仍在使用旧版导航规则,则faces-redirect=true通过结果中的参数或<redirect/>导航案例中的条目,通过重定向而不是(默认)转发进行导航faces-config.xml.
Faces消息是请求范围的,因此仅在当前请求所服务的资源中可用.通过重定向导航时,您基本上是在指示webbrowser在给定的URL上创建全新的请求.face消息根本不在该请求中.
如果重定向确实是强制性的,例如为了完成POST-Redirect-GET模式 - 这是一件好事 - 那么你需要将消息存储在flash范围内.你可以通过打电话Flash#setKeepMessages(),传递来做到这一点true.
context.addMessage(clientId, message);
context.getExternalContext().getFlash().setKeepMessages(true);
Run Code Online (Sandbox Code Playgroud)
请注意,如果您使用的是早于2.1.14的Mojarra版本并且重定向到不同基本文件夹中的资源,则此操作将失败.另见问题2136.
| 归档时间: |
|
| 查看次数: |
3863 次 |
| 最近记录: |