gpt4 book ai didi

ajax - 处理AJAXified JSF 2.0组件时,不应该立即使用="true"吗?

转载 作者:行者123 更新时间:2023-12-04 01:27:56 25 4
gpt4 key购买 nike

处理AJAXified JSF 2.0组件时,不应该使用immediate="true"吗?

该示例可能是:

如果我想在JSF 2.0页面上实现一个“取消”按钮,如果用户单击“取消”,则不应运行任何验证,如果该组件是ajaxified组件,我应该在该组件上设置immediate="true"还是应该在表单上指定没有任何组件应该处理吗?如果是这样,使用组件的AJAXified功能实现此功能的方法是什么,而不是使用immediate="true"的“旧方法”?

最佳答案

的确,自从您可以将immediate="true"设置为<f:ajax>(已经是默认设置)以跳过对同一形式的所有输入组件的处理以来,在取消按钮上使用execute="@this"的目的就变得毫无用处了。

仅当表单已经预先提交但由于转换/验证失败而失败时,您才可能遇到问题。如果您通过ajax按下“取消”按钮并在此后呈现表单,则输入仍将被标记为无效,并且模型值的任何更改都不会反射(reflect)出来(您可能正在执行entity = new Entity();或使用“取消”操作方法来清除旧的方法表格的值)。当将同步(非ajax)请求与immediate="true"一起使用时,不会发生此问题。这个问题实际上与immediate="true"无关,但与ajax请求的JSF生命周期无关。基本上,您需要通过调用不在ajax EditableValueHolder#resetValue()中包含但在ajax execute中包含的组件上的 render 来重置所涉及的输入组件的无效状态。 OmniFaces为此具有一个 ResetInputAjaxActionListener

关于ajax - 处理AJAXified JSF 2.0组件时,不应该立即使用="true"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10502326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com