使用ajax侦听器时,Primefaces对话框框架无法正常工作
发布时间:2020-12-16 02:55:46 所属栏目:百科 来源:网络整理
导读:我正在尝试使用Primefaces 4对话框架打开对话框, public void openDialog(String viewName) { RequestContext.getCurrentInstance().openDialog(viewName);} 这有效: p:commandButton value="Click" action="#{impaktDialogBean.openDialog('/popup/test2')
我正在尝试使用Primefaces 4对话框架打开对话框,
public void openDialog(String viewName) { RequestContext.getCurrentInstance().openDialog(viewName); } 这有效: <p:commandButton value="Click" action="#{impaktDialogBean.openDialog('/popup/test2')}"/> 这不是: <p:commandButton value="Click"> <p:ajax event="click" listener="#{impaktDialogBean.openDialog('/popup/test2')}" ></p:ajax> </p:commandButton> 因此,Primefaces对话框架仅适用于动作& ActionListener的????? 我正在使用: > Primefaces 4 谢谢. 解决方法
你有这个:
public void openDialog(String someView) { RequestContext.getCurrentInstance().openDialog(someView); } 所以当你这样做时: <h:form id="form"> <p:commandButton id="button" value="Click" actionListener="#{bean.openDialog('someView')}" /> </h:form> 您在Ajax响应中接受了这一点: PrimeFaces.openDialog({ url:'/some/address/view.xhtml',pfdlgcid:'cf8e7955-a6cf-4dd8-9a07-55cd29696a64',sourceComponentId:'form:button',sourceWidget:PF('widget_form_button'),options:{}}); 所以,你可以试试这个: <h:form id="form"> <p:commandButton id="button" value="Click" onclick="PrimeFaces.openDialog({ url:'/some/address/view.xhtml',options:{}});" /> </h:form> 你甚至可以使用返回值: <h:form id="form"> <p:growl id="growl" showDetail="true" /> <p:commandButton id="button" value="Click" onclick="PrimeFaces.openDialog({ url:'/some/address/view.xhtml',options:{}});"> <p:ajax event="dialogReturn" listener="#{bean.returnedValue}" update="growl" /> </p:commandButton> </h:form> AJAX只是将结果转换为目标网址.如果您已有目标网址,则无需执行此操作.在我的基本测试中,这很好,与原始测试完全一样,除了你必须在’url’字段中传递目标地址,而不是结果. 希望这可以帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |