Primefaces 5.0对话框小部件变量

6

我正在使用PrimeFaces 5和Wildfly服务器构建网站。在使用<p:dataTable>组件时遇到了问题。每行都有一个<p:commandButton>,该按钮定义了actionListener属性,调用后端bean方法,然后应该显示对话框。以下是一些代码:

<?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控制台,并收到了消息“单击按钮时未提供var'dlg'的小部件!”所以我检查了'Primefaces.widgets',确实没有适用于我的对话框的小部件。有人可以帮我吗?
//编辑 好的,我最终让它工作了。通过反复试验,我在我的模板中找到了这一行:
<script type="text/javascript" src="//code.jquery.com/jquery-2.1.1.min.js"></script>

在移除它后,一切都按计划进行了。我认为这是因为PrimeFaces自带了自己的jquery版本,对吗?


你能试试 PF(':dlg') 吗? - acsadam0404
你的情况非常基础,应该可以工作。检查一下页面加载时是否有任何JavaScript错误。 - Hatem Alimam
你能否分享一下你的“bean”代码? - alex
一切正常,现在请检查编辑后的消息。 - matek2305
是的,我在PrimeFaces v5之上额外加载了jQuery。通过移除这个“手动加载”的库,pf对话框可以正常工作。 - fusion27
2016年 - 同样的问题 - 移除了外部的js,回到正轨! - Tirath
1个回答

5

Primefaces已经有了一个jQuery,因此在使用Primefaces时非常建议不要再使用另一个jQuery库。

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

您可以在迁移指南中查看此及其他更改:https://code.google.com/p/primefaces/wiki/MigrationGuide


对我有用!谢谢。 - Dandelion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接