AutoSubmit与PartialSubmit区别

Web2.0应用的两大特点就是异步请求响应和局部页面刷新。
比如:一个天气预报页面内容包括:国家下拉列表、省下拉列表、城市下拉列表,以及选择城市的最近三天天气情况。
当我们选择国家后,只刷新省的下拉列表;选择省后,只刷新城市的下拉列表;选择城市时,刷新最近三天天气情况。

总之,我们希望页面能够局部、动态地刷新,请求发送后不必等待响应就能马上做其它事情,而响应回来后,页面相关组件会得到通知,然后自动更新。
AutoSubmit、PartialSubmit、PartialTriggers这三个参数的主要作用就是完成异步请求响应和局部页面刷新。
一般人对PartialTriggers的作用比较清楚,但AutoSubmit和PartialSubmit的区别就不太清楚了。

1. autoSubmit 只在输入组件上才有的一个属性。
例如:< af:inputText id="productpriceIT" label="Price" autoSubmit="true" value="#{advertisement.price}" >

当设置为true后,改变该组件的值后(焦点离开后),该组件的值(注意,不是整个form)将被提交到服务器,即进入【转换、验证、更新模型、重新呈现】的各个生命周期阶段(注意先后次序)。
表单中的其它组件不受任何影响,表单也并未提交,只是该组件被异步地提交了。这意味着,即使表单中还有其它必填项,也不会提示“该项不能为空”,因为没有触发到这些必填项。
如果在Manage Bean中更新了该组件的值,必须要刷新该组件才能显示新值,即进入【重新呈现】阶段。刷新该组件有两种方法:
(1)在页面中设置autoSubmit + partialTriggers 刷新(这里指向自己)
< af:inputText id="productpriceIT" label="Price" autoSubmit="true" value="#{advertisement.price}" partialTriggers="productpriceIT">
(2)在Manage Bean 中用代码刷新
AdfFacesContext.getCurrentInstance().addPartialTarget(this.productpriceIT);

2. partialSubmit 只在命令组件上才有的一个属性。
例如:< af:commandLink id="showImageCL" text="#{areaAndCategoryProvider.showAreaImage?'Hide image':'Show image'}"
actionListener="#{areaAndCategoryProvider.toggleImage}" partialSubmit="true" partialTriggers="showImageCL" />

默认情况下,单击命令链接或按钮将导致表单提交或页面导航,整个页面将被刷新和重载,其页面效果是页面好像抖动了一下,用户感受稍差一些。
这时,我们可以使用partialSubmit + partialTriggers,来刷新某个组件,其页面效果是只会刷新组件,而不会刷新整个页面。
当然,表单还是会被提交,如果表单中有必填项,将会验证出错,这一点和没有设置partialSubmit=true的按钮或链接一样,二者区别是:设置了partialSubmit=true的按钮或链接界面效果不会抖动,同时点击后会启动 ppr 请求,如果设置了partialTriggers 的话。

与autoSubmit的区别是,后者仅处理更改的组件本身以及在其 partialTriggers 属性中包含引用的所有组件,不会触发表单中的必填项的验证,除非这些必填项的partialTriggers 指向设置了autoSubmit=true的组件。

值得注意的是,CommandToolBarButton 默认partialSubmit =true,所以如果你需要刷新某个组件,必须设置partialTriggers,否则页面不会被刷新。
而CommandButton 默认partialSubmit =false,默认会刷新整个页面。

原文地址:http://blog.csdn.net/beckben/article/details/38711053

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值