Jsf Primefaces 5.0对话框widgetvar

Jsf Primefaces 5.0对话框widgetvar,jsf,primefaces,dialog,Jsf,Primefaces,Dialog,我正在使用PrimeFaces5和wildfly服务器构建网站。我在使用组件时遇到问题。我在每一行中都有如下内容。按钮定义了调用支持bean方法的actionlistener属性,之后它应该显示对话框。下面是一些代码: <?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR

我正在使用PrimeFaces5和wildfly服务器构建网站。我在使用组件时遇到问题。我在每一行中都有如下内容。按钮定义了调用支持bean方法的actionlistener属性,之后它应该显示对话框。下面是一些代码:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
                xmlns:h="http://xmlns.jcp.org/jsf/html"
                xmlns:p="http://primefaces.org/ui"
                xmlns:pt="http://java.sun.com/jsf/composite/components"
                template="../templates/mainTemplate.xhtml">

    <ui:define name="title"></ui:define>

    <ui:define name="main-content">

        <h:form>
            <p:dataTable id="dataTable" value="#{bean.list}" var="item"
                         styleClass="hide-column-header small-text">

                <!-- some columns -->

                <p:column style="width: 18%; text-align: center;">
                    <p:commandButton value="Open dialog" actionListener="#{bean.buttonListener(item)}" oncomplete="PF('dlg').show();"/>
                </p:column>

            </p:dataTable>
        </h:form>

        <p:dialog id="dialog" widgetVar="dlg" resizable="false" modal="true"
                  header="Dialog">
            <h:form> <!-- some inputs --> </h:form>
        </p:dialog>
    </ui:define>

</ui:composition>

但它不起作用。我检查了chrome控制台,当我点击按钮时,得到消息“Widget for var”“Widget for var'dlg'不可用!”,所以我选中了“Primefaces.widgets”,实际上我的对话框中没有Widget。有人能帮我吗

//编辑
好了,我终于开始工作了。通过反复试验,我在模板中找到了这一行:

<script type="text/javascript" src="//code.jquery.com/jquery-2.1.1.min.js"></script>


移除后,一切都按计划开始工作。我认为这是因为primefaces自带了自己版本的jquery,对吗?

primefaces已经有了一个jquery,所以在使用primefaces时,建议不要使用另一个jquery库

尝试删除外部jQuery库,并通过命令PF('dlg').show()调用该对话框


您可以在迁移指南中查看此更改和其他更改,网址为:

您可以试试PF(“:dlg”)吗?您的案例非常基本,应该可以。检查页面加载是否有任何javascript错误。另外,您可以发布您的“bean”代码吗?现在一切正常,请检查编辑的消息。是的,我在PrimeFaces的v5上加载了一个额外的jQuery。通过删除“手动加载”的库,pf对话框工作得很好。对我来说工作得很好!谢谢