是否可以通过Primefaces 3.3的自定义对话框取消Ajax请求
Is it possible to cancel Ajax-Requests with a custom dialog with Primefaces 3.3?
如果用户更改selectOneMenu
中的值,我们希望显示一个确认对话框。这与浏览器本机confirm()
方法配合得很好,因为它会阻塞直到用户决定。有没有一个优雅的(首选的客户端)解决方案可以通过素数面对话框来实现这一点,从而使不同浏览器的外观保持一致?
当前解决方案:
<p:selectOneMenu id="som" value="#{foo.item}">
<f:selectItems value="#{foo.items}" var="i" itemLabel="#{i.name}" itemValue="#{i.value}" />
<p:ajax event="change" onstart="return confirmChange()" />
</p:selectOneMenu>
<script type="text/javascript">
function confirmChange() {
return confirm("O'RLY?");
}
</script>
您可以使用PrimeFaces的<p:confirmDialog>
,甚至只使用<p:dialog>
。
<p:selectOneMenu id="som" value="#{foo.item}" onchange="confirm.show()">
<f:selectItems value="#{foo.items}" var="i" itemLabel="#{i.name}" itemValue="#{i.value}" />
</p:selectOneMenu>
<p:confirmDialog widgetVar="confirm" message="ORLY?" header="Confirm" severity="alert">
<p:commandButton value="Yes" action="#{bean.submit}" process="som" oncomplete="confirm.hide()" />
<p:commandButton value="No" type="button" onclick="confirm.hide()" />
</p:confirmDialog>
在#{bean.submit}
中执行确认作业。如果需要的话,你可以用一个标记文件或一个复合组件来抽象这一切,这样它就可以更好地重用了。
<p:selectOneMenu id="som" value="#{foo.item}" onchange="confirm.show()">
<f:selectItems value="#{foo.items}" var="i" itemLabel="#{i.name}" itemValue="#{i.value}" />
</p:selectOneMenu>
<my:confirmDialog id="confirm" message="ORLY?" action="#{bean.submit}" process="som" />
请注意,这里没有"取消"ajax请求的方法。你只是在真正确认之前不会调用它。
相关文章:
- 是否可以通过Primefaces 3.3的自定义对话框取消Ajax请求
- 当搜索字段为空时,取消所有ajax请求
- Ajax 请求正在取消页面上的其他 JS 事件
- 如何取消原型ajax调用
- 选中/取消选中时复选框ajax请求
- Ajax jQuery同时进行多个调用-等待应答的时间很长,无法取消
- HTTP_STREAM_PARSER_READ_HEADERS之后取消AJAX请求
- 如何在页面卸载时发送AJAX PUT请求而不取消
- 在慢速网络上,上一个Ajax请求会被下一个取消
- AJAX 获取 JSON 取消
- JQuQuery UI 对话框取消 AJAX 请求
- 取消 ajax 请求:处理程序是否仍可执行
- 如何使用Jquery.Uno唐突.ajax取消ajax请求
- 如何取消AJAX长期运行的MVC操作客户端(javascript)
- 取消ajax中的页面加载状态
- 如何取消Ajax请求
- 使用javascript取消ajax modalpopupextender
- 当浏览器故意取消AJAX时,我该如何判断
- 取消ajax()成功
- 用coffeescript延迟(取消)ajax请求