当前位置: 首页 > 面试题库 >

在处理AJAXified JSF 2.0组件时,应该永远不要使用即时=“ true”吗?

卓俊晖
2023-03-14
问题内容

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

该示例可能是:

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


问题答案:

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

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



 类似资料:
  • 有没有人遇到过使用场景?由于是默认选项,我看不到你什么时候会使用它。

  • 问题内容: 我正在使用Asp.net MVC3,并尝试在服务器上做一个简单的Ajax发布,它返回部分视图并在搜索过程中更新我的项目列表。 Ajax成功调用服务器,服务器通过发送部分视图进行响应。但是部分视图始终在新页面中呈现。我发现这是因为它不知道即将到来的ajax调用,因此它呈现了一个新页面。 我的控制器代码非常简单: 但是无论如何,Request.IsAjaxRequest()始终返回fals

  • 问题内容: 究竟是通过对吗? 我的应用程序处理了来自用户的输入,并且花了一些时间。在这段时间内,应用程序无法处理其他请求。我已经测试了我的应用程序,它可以让我同时处理多个请求。 问题答案: 从Flask 1.0开始,Flask随附的WSGI服务器默认在线程模式下运行。 在1.0之前的版本中,或者如果你禁用线程,则服务器以单线程模式运行,并且一次只能处理一个请求。任何并行请求都必须等待,直到可以处理

  • 问题内容: 在我的组件中,我具有以下内容: 不调用取消订阅会导致以下错误: 警告:setState(…):只能更新已安装或正在安装的组件。这通常意味着您在未安装的组件上调用了setState()。这是无人值守。 我想知道的是我应该分配给它,还是有更好的分配空间? 问题答案: 正如Salehen Rahman在上面的评论中提到的,我最终还是使用react-redux。 根据他们的文档,我创建了两个函

  • 就在我以为我已经明白的时候...*叹息* 从我读到的关于立即的所有信息来看,我希望有以下几点: > 当尝试执行foo而不为输入字段提供值时,不会执行该操作,因为在期间发生错误,导致在此阶段之后直接重新呈现页面并显示错误消息。的值保持不变。(按预期工作) 当尝试do bar而不为输入字段提供值时,由于immediate属性,该操作将在期间执行。变量已更改。(按预期工作) “null返回值(作为act

  • 我正面临一个让我发疯的问题。 我尝试在onDestroyView()中删除观察者,它可以工作,观察者被删除,但是一旦片段再次进入onActivityCreated()中,并且我观察到livedata,观察者就会立即被触发...我总是使用“ViewLifecyCleOwner”作为所有者。 如果我返回实例化片段,是否有任何方法可以取消liveData的执行? 我所有的frag都扩展了ScopeFra