在处理AJAXified JSF 2.0组件时,是否应该立即使用immediate ="true"?

Bes*_*ces 9 ajax jsf jsf-2 immediate-attribute

如果immediate="true"有一个支持Ajax JSF 2.0组件打交道时从来没有被使用?

示例可能是:

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

Bal*_*usC 11

实际上,在immediate="true"取消按钮上使用的目的已经变得无用,因为<f:ajax>您可以设置为execute="@this"(已经是默认设置)以跳过相同形式的所有输入组件的处理.

您可能只在事先提交表单时遇到问题,但由于转换/验证失败而失败.如果您通过ajax点击取消按钮并在此后渲染表单,输入仍然会被标记为无效,并且模型值中的任何更改都不会反映出来(您可能正在执行entity = new Entity();取消操作方法中的某个或某些操作来清除旧值形式).使用同步(非ajax)请求时不会发生此问题immediate="true".这个问题实际上与immediate="true"ajax请求的JSF生命周期没有任何关系.您基本上需要通过调用EditableValueHolder#resetValue()未包含在ajax execute中但包含在ajax中的组件来重置所涉及的输入组件的无效状态render.OmniFacesResetInputAjaxActionListener出于这样的目的.