【问题标题】:JSF2 BeanValidation reset values after failureJSF2 BeanValidation 失败后重置值
【发布时间】:2012-07-15 16:21:14
【问题描述】:

我们的 Web 应用程序的模块在中心显示数据表,在右侧显示所选记录的详细信息。每次用户选择主表的记录时,我们都会更新详细信息页面并显示所选记录的详细信息。现在我们有以下问题:

  1. 用户在主表中选择一条记录,数据显示在明细区。
  2. 用户修改明细数据,点击保存。
  3. 发生验证(bean 验证)错误,用户将看到错误消息)。
  4. 用户选择了主表的另一条记录,而不是更正错误的输入。
  5. 所有没有错误状态的字段都将使用新记录的数据进行更新。之前错误的字段显示旧数据。旧记录的数据会一直保留到用户刷新页面。

有什么办法可以解决这个问题吗?我从 Primefaces 扩展中看到了一个 pe:resetInput 组件,但是这个组件需要一个 UICommand 组件才能工作。如果用户选择主表的另一个条目,我需要一个可行的解决方案。

【问题讨论】:

    标签: validation user-interface jsf-2 primefaces bean-validation


    【解决方案1】:

    您可以为此使用 ResetInputAjaxActionListenerOmniFaces。除了注册为<f:actionListener>外,还可以全局注册为PhaseListener

    另见:


    如果你打算自己动手,那么你基本上需要自己编写代码,基本上完成以下事情:

    • 在调用操作阶段,获取未被 ajax 请求执行/处理的待渲染 UIInput 组件。
    • 对它们调用resetValue() 方法。

    另见:

    【讨论】:

    • 还有一个问题。该组件按预期工作,字段将被重置,但由于我的更改 标记不再起作用。似乎他们会被忽略。这可能属于 ResetInput 组件吗? (JSF 生命周期)
    • 你到底用它们做什么?构建视图?还是渲染视图?如果是后者,那么它是错误的工具。另见stackoverflow.com/questions/3342984/…
    • 我们使用它来构建视图。这是一个简单的例子: :tabView> 在萤火虫中,我看到完全出错了。逻辑尝试访问错误 bean 的属性等。我已经测试了几个我们使用 的地方。它不再起作用了。如果我删除 ActionListener 一切正常。
    • 这很奇怪。如果您将问题与 SSCCE 一起报告,将会很有帮助。
    猜你喜欢
    • 1970-01-01
    • 2012-11-09
    • 2013-10-03
    • 2011-10-04
    • 1970-01-01
    • 2011-12-18
    • 2012-07-16
    • 1970-01-01
    • 2013-01-11
    相关资源
    最近更新 更多