当我尝试打开Primefaces上的对话框时出错,我无法理解为什么会这样。
这是我的页面代码:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<body>
<ui:composition template="./template/template.xhtml">
<ui:define name="content">
<p:commandButton value="Abrir" oncomplete="w_dlgTeste.show()"/>
<p:confirmDialog header="Erro desnecessário." message="Não estou a entender nada." widgetVar="w_dlgTeste" />
</ui:define>
</ui:composition>
</body>
</html>
在谷歌浏览器Javascript
控制台上,我看到了:
答案 0 :(得分:1)
尝试使用onclick="PF('w_dlgTeste').show()"
。出现的错误是因为在Primefaces 4.0及更新版本中,小部件存储在javascript小部件数组中,您必须调用PF('w_dlgTeste')
将其从数组中返回。
除此之外,您可以在没有内容的情况下使用confirmDialog,但由于您无法确认任何内容,因此没有任何意义。您也应该添加确认按钮。
如果您想要最简单的方法,只能使用javascript:
<p:commandButton onclick="return confirm('Are you sure?')" .../>
修改强>
如果您要做的是显示对话框确认,那么您应该采用的最佳方式就像this:
在每个想要对话框确认的按钮中使用p:confirm
:
<p:commandButton value="Abrir">
<p:confirm header="Erro desnecessário." message="Não estou a entender nada." />
</p:commandButton>
并将global="true"
对话框放在您的模板上,因为您可能希望重复使用它:
<p:confirmDialog global="true">
<p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
<p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
</p:confirmDialog>
另一种选择是,如果你想要的只是一个简单的信息对话框,你可以按下按钮的动作:
<p:commandButton value="Abrir" oncomplete="PF('w_dlgTeste').show()"/>
<p:dialog header="Erro desnecessário." widgetVar="w_dlgTeste">
Não estou a entender nada.
</p:dialog>