我正在尝试使用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
> Tomcat 7
> JSF 2.2.6 Mojarra
谢谢.
解决方法
你有这个:
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’字段中传递目标地址,而不是结果.
希望这可以帮助.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。