微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用ajax侦听器时,Primefaces对话框框架无法正常工作

我正在尝试使用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] 举报,一经查实,本站将立刻删除。

相关推荐