Primefaces 5.0对话框widgetvar

时间:2014-07-15 06:02:32

标签: jsf primefaces dialog

我正在使用primefaces 5和wildfly服务器构建网站。我在使用组件时遇到问题。我在每一行中都有以下内容。 Button定义了actionlistener属性,该属性调用了backing 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控制台并得到消息“Widget for var'Widget for var'dlg'不可用!”当点击按钮,所以我检查了'Primefaces.widgets',实际上我的对话框没有小部件。任何人都可以帮我吗?

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

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

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

1 个答案:

答案 0 :(得分:5)

Primefaces已经有了一个jQuery,所以我们建议在使用Primefaces时不要使用另一个jQuery lib。

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

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