JSF中partialSubmit和autoSubmit有什么区别?

时间:2011-09-02 09:12:11

标签: jsf oracle-adf

我想我知道不同之处,但现在我发现自己很困惑。 :P

它们似乎都做同样的事情,除了在提交按钮上使用partialSubmit来使用AJAX提交表单,autoSubmit用于可编辑组件,它只提交自己的内容。我说得对吗?

2 个答案:

答案 0 :(得分:9)

对于ADF,接受的答案并非100%正确。 partialTriggers属性涉及生命周期。

来自Enabling Partial Page Rendering Declaratively

  

输入组件的autoSubmit属性和partialSubmit   命令组件上的属性不是同一个东西。什么时候   partialSubmit设置为true,然后仅设置为具有的组件   他们的partialTriggers属性的值将通过处理   生命周期。输入和选择使用autoSubmit属性   告诉框架自动执行表单提交的组件   每当价值变化时。但是,当提交表格时   autoSubmit属性设置为true,valueChangeEvent事件为   调用,生命周期仅在标记为root的组件上运行   该活动的组成部分及其子女。欲获得更多信息,   请参见第4.4节“Using the Optimized Lifecycle”。

答案 1 :(得分:3)

它们都是从自定义JSF组件的自定义属性发生的AJAX启用调用。 autoSubmit基本上异步回发特定于组件的内容,用于使服务器端托管bean值与客户端组件内的内容保持同步。

partialSubmit是另一个异步AJAX调用,用于在某种组件事件上立即回发组件值,例如失去对ICEFaces inputText组件的关注。

有趣的是,整个ViewState会在每种类型的异步提交上回发,因此如果在提交之前页面上的其他组件的值发生了更改,则绑定的服务器端托管bean属性将具有其值即使客户端组件可能无法刷新以反映可能已发生的任何服务器端数据更改,也会刷新。

实际上,每个回发都会发生整个JSF服务器端生命周期,请阅读以下有关实现调试PhaseListener的文章,该文章允许您查看每次异步提交操作发生后正在发生的阶段。

http://balusc.blogspot.com/2006/09/debug-jsf-lifecycle.html