google之, 也没有什么解决方案(jsf2的技术资料好少, 大部分都是入门介绍而已)
于是自己动手, 暂时想出两个解决方案如下
1) 调用window.stop();
很好, 所有请求都被中断了. 这是个简单暴力的方法, 应该适用于同一时间只有一个连接请求的场景, 事实上大多数应用一次都只有一个请求
2) 如果不要这么简单暴力呢?
不暴力的方式暂时没有想出来, 但还想出一个不简单的方式... 其实也不复杂, 就是修改jsf.js
如果要实现打断指定的请求, 那么就必须取得该发出请求xhr对象的句柄. 通过修改下面的代码, 就可以拿到xhr对象:
//黄色部分即为添加的代码
就是这个data了, 而这个onevent就是jsf2中ajax标签中 <f:ajax execute=".." render="..." onevent="onevent"/> 的onevent回调函数data.request就是刚刚传入的xhr对象了
我在 status=="begin" 时写了两行代码,其中 data.source.xhr=data.request 把xhr对象句柄交给了事件源对象, 一般来说, 就是点击的那个按钮, 那么以后 somebtn.xhr 就是这个请求对象了.
如果不放心, 我还用了一个alert, 显示结果就是httprequest对象, 妥妥的.
有了xhr对象句柄, 剩下的想怎么玩怎么玩吧
另求其它的解决方案.
--
from: huxiaodi






























