【问题标题】:Open Dialog Box on Primefaces Error在 Primefaces 错误上打开对话框
【发布时间】:2014-09-22 16:26:28
【问题描述】:

当我尝试在 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 控制台上我看到了这个:

【问题讨论】:

    标签: javascript jsf jsf-2 primefaces


    【解决方案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>
    

    【讨论】:

    • 我试过了,还是不行。另一方面,它会更好地理解问题,找到错误,而不是只工作。为什么这不起作用?
    • 感谢您的关注,但 confirmDialogdialog 正在发生这种情况。你知道为什么这不像演示的那样工作吗?
    • 现在检查我的答案,注意如果你想要的是一个确认对话框,你应该把它放在一个onclick里面,因为oncomplete是在你想要做的动作之后执行的。
    • 抱歉我的缺席@mrganser,好吧,我正在使用primefaces 3.5,我已经尝试过其他项目并且它可以作为演示文稿使用,但我尝试了你展示的方式(作为primefaces展示) 并且有效,但我需要了解为什么有时会发生这种情况。
    • @Cold Before 4.0 应该像你一样工作,4.0+ 你必须使用 PF('xxx') 正如我的回答中解释的那样,除此之外,我想不出你为什么要面对这个错误跨度>
    猜你喜欢
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 2011-05-10
    • 2019-01-31
    相关资源
    最近更新 更多