【问题标题】:JSF 2.0 Validation errors result the input fields to display local values instead of updated model valuesJSF 2.0 验证错误导致输入字段显示本地值而不是更新的模型值
【发布时间】:2011-11-22 16:58:12
【问题描述】:

应用程序使用 JSF 2.0 框架。 用户向表单输入值。当用户选择保存时,有些字段有验证错误,有些则没有。 用户单击取消按钮。然后用户再次单击更新按钮。 即使更新了模态值,选择保存时具有有效值的字段也会显示本地值而不是更新后的模型值。

我通过在cancel的action方法中添加resetValues()方法解决了这个问题。 resetValues() 循环遍历子列表并将本地值重置为 null。

对于这个问题有没有更好的解决方案来提高应用程序的性能?

【问题讨论】:

    标签: jsf-2 validation


    【解决方案1】:

    取消按钮应该重新创建视图。您可以通过将导航结果返回到同一视图来完成此操作,如有必要,请使用 faces-redirect=true

    【讨论】:

    • 感谢您的快速回复。你的解决方案也有效。只有当方法返回页面名称而不是空字符串时,它才有效。
    • 不客气。实际上,它必须是有效的视图 ID,而不是空字符串或 nullvoid。理论上你甚至可以做<h:commandButton value="cancel" action="#{facesContext.viewRoot.viewId}" immediate="true" />
    • 表单有两个面板组,打开和关闭状态。取消按钮有ajax。如果我删除命令按钮的ajax,它就可以工作。但是,如果我为命令按钮添加 ajax,使用 immediate = true 和 execute="@this",则保留以前的值。
    • 只有当你使用faces-redirect=true时,Ajax 才会导航。
    • 我正在返回“viewId?faces-redirect=true”,但这些值仍然显示本地值而不是更新的模型值。 <h:commandLink id="cancel" value="Cancel"immediate="true"> <br/> <f:ajax event="click" render="@form" execute="@this" listener="#{bean.cancel"/> <br/> </h:commandLink>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 2011-03-03
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    相关资源
    最近更新 更多