Primefaces错误打开对话框

时间:2014-09-22 16:26:28

标签: javascript jsf jsf-2 primefaces

当我尝试打开Primefaces上的对话框时出错,我无法理解为什么会这样。

这是我的页面代码:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui">
    <body>

        <ui:composition template="./template/template.xhtml">
            <ui:define name="content">
                <p:commandButton value="Abrir" oncomplete="w_dlgTeste.show()"/>
                <p:confirmDialog header="Erro desnecessário." message="Não estou a entender nada." widgetVar="w_dlgTeste" />
            </ui:define>
        </ui:composition>

    </body>
</html> 

在谷歌浏览器Javascript控制台上,我看到了:

enter image description here

1 个答案:

答案 0 :(得分:1)

尝试使用onclick="PF('w_dlgTeste').show()"。出现的错误是因为在Primefaces 4.0及更新版本中,小部件存储在javascript小部件数组中,您必须调用PF('w_dlgTeste')将其从数组中返回。

除此之外,您可以在没有内容的情况下使用confirmDialog,但由于您无法确认任何内容,因此没有任何意义。您也应该添加确认按钮。

如果您想要最简单的方法,只能使用javascript:

<p:commandButton onclick="return confirm('Are you sure?')" .../>

修改

如果您要做的是显示对话框确认,那么您应该采用的最佳方式就像this

在每个想要对话框确认的按钮中使用p:confirm

<p:commandButton value="Abrir">
    <p:confirm header="Erro desnecessário." message="Não estou a entender nada." />
</p:commandButton>

并将global="true"对话框放在您的模板上,因为您可能希望重复使用它:

<p:confirmDialog global="true">
    <p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
    <p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
</p:confirmDialog>

另一种选择是,如果你想要的只是一个简单的信息对话框,你可以按下按钮的动作:

<p:commandButton value="Abrir" oncomplete="PF('w_dlgTeste').show()"/>
<p:dialog header="Erro desnecessário." widgetVar="w_dlgTeste">
    Não estou a entender nada.
</p:dialog>