【发布时间】:2014-09-05 05:09:44
【问题描述】:
我正在使用 primefaces 5 和 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 控制台并收到消息“var 的小部件' var 'dlg' 的小部件不可用!”单击按钮时,我检查了“Primefaces.widgets”,实际上我的对话框没有小部件。谁能帮我解决这个问题?
//编辑
好的,我终于让它工作了。通过反复试验,我在模板中找到了这一行:
<script type="text/javascript" src="//code.jquery.com/jquery-2.1.1.min.js"></script>
删除它后,一切都开始按计划工作。我认为这是因为 primefaces 带有自己的 jquery 版本对吗?
【问题讨论】:
-
你可以试试 PF(':dlg') 吗?
-
您的案例是非常基本的案例,应该可以。检查页面加载时是否有任何 javascript 错误。
-
您也可以发布您的“bean”代码吗?
-
现在一切正常,检查编辑的消息。
-
是的,我在 PrimeFaces 的 v5 之上加载了一个额外的 jQuery。通过删除“手动加载”库,pf 对话框运行良好。
标签: jsf primefaces dialog