我正在使用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版本,对吗?