我的应用程序中有一个JSF页面,其中包含使用PrimeFaces的表格。该表有一个ajax方法,应该在特定事件被触发时执行:
如果客户端浏览器来自移动设备(手持设备),则应触发ajax请求的事件必须为onSelect
,否则(对于桌面)事件必须为onDblselect
(双击)。< / p>
这是表格中的ajax:
<p:ajax event="rowDblselect" listener="#{productController.productSelect}" update=":mainForm" />
如您所见,现在的事件是固定的。我知道我可以使用javascript中的window.matchMedia('screen and (max-width: 765px)').matches
命令获取设备类型,该命令返回true
或false
。但是我怎么能把它绑定到事件上,因为&#34;事件&#34; ajax标签的属性不接受javascript代码?
答案 0 :(得分:0)
我通过创建两个ajax侦听器来解决它,每个事件一个,并且通过onStart方法上的javascript取消了不适合特定设备的侦听器,如下所示:
<p:ajax event="rowDblselect" onstart="return !isMobileDevice();" listener="#{productController.productSelect}" update=":mainForm" />
<p:ajax event="rowSelect" onstart="return isMobileDevice();" listener="#{productController.productSelect}" update=":mainForm" />
isMobileDevice是一个简单的JS函数:
function isMobileDevice() {
return window.matchMedia("screen and (max-width: 765px)").matches;
}