【问题标题】:JSF PRG with validation error带有验证错误的 JSF PRG
【发布时间】:2013-02-06 11:11:21
【问题描述】:

我正在使用带有 PRG 模式的 JSF。 (在我的导航规则中使用)。

问题是当我遇到验证错误(例如:用户未设置强制值)时,重定向未完成(即,一个帖子后跟一个获取同一页面的内容)。

场景是:

  1. 用户没有输入强制值并提交表单

  2. 发生验证错误,并且显示相同的视图时出现错误 消息(无 PRG)

  3. 用户设置强制值并提交 ==> 转到下一页 (带 PRG)

  4. 用户单击返回按钮 => 问题,因为在 第 2 步。==> 在 Firefox 中出现“文档已过期”屏幕

谁能帮帮我?

提前致谢。

史蒂芬

【问题讨论】:

  • 我不明白你的具体问题。那么第 4 步到底发生了什么?
  • 鉴于您的follow-up question,我相信您的具体问题是重新显示输入值,因为您错误地将它们存储在会话范围的 bean 而不是请求/视图范围的 bean 中。我的猜测正确吗?为什么你没有在问题的任何地方说明你的问题到底是什么?你只是说“问题”,没有别的。
  • 我从 Firefox 获得了“文档已过期”屏幕。我忘了说我有一个强制无缓存的过滤器......
  • @BalusC :我在balusc.blogspot.be/2007/03/post-redirect-get-pattern.html 中试过你的代码,效果很好,但我担心警告:JSF1063:警告!将不可序列化的属性值设置为 HttpSession(键:PostRedirectGetListener.savedViewRoot,值类:javax.faces.component.UIViewRoot)。这可能是集群环境中的问题。
  • 那个阶段监听器是为 JSF 1.x 而设计的,而不是你需要的。

标签: jsf-2 messages post-redirect-get


【解决方案1】:

只需通过 ajax 提交表单。这是一个添加的问题

<f:ajax execute="@form" render="@form" />

到命令链接和按钮。如果您使用的是&lt;h:message(s)&gt;,那么我假设它们的格式完全相同,否则您需要将它们的客户端 ID 添加到 render

通过 ajax 提交表单时的验证错误不会生成历史记录。

【讨论】:

  • 谢谢,它有效。但我宁愿尽可能避免使用 ajax(我的公司不想在每次提交表单时都使用它......(我知道这很烦人)
猜你喜欢
  • 1970-01-01
  • 2011-02-02
  • 2014-04-11
  • 2021-11-22
  • 2013-08-27
  • 2017-11-10
  • 2013-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多