Java PrimeFaces 4.0:Dialog.show()无效

Java PrimeFaces 4.0:Dialog.show()无效,java,jsf-2,primefaces,Java,Jsf 2,Primefaces,我有一个这样的对话: <p:dialog id="pinDialog" widgetVar="pinDialog" width="800" binding="#{userBean.pinCheckDialog}" closable="false" modal="true" closeOnEscape="false" showEffect="clip" hideEffect="clip"> <h:form id="pinEntry">

我有一个这样的对话:

        <p:dialog id="pinDialog" widgetVar="pinDialog" width="800" binding="#{userBean.pinCheckDialog}" closable="false" modal="true" closeOnEscape="false" showEffect="clip" hideEffect="clip">
            <h:form id="pinEntry">
                <p:messages for="messagesForPinCheck"/>
                <p:outputLabel for="pinCode" value="#{messages.PinCodeRequired}"/>
                <p:inputText value="#{userBean.enteredPin}" size="4" id="pinCode"/>
                <p:commandButton value="#{messages.PinCodeSubmit}" update="@form" action="#{userBean.submitPin()}"/>
            </h:form>
        </p:dialog>

日志消息出现,但屏幕上没有任何动作。我也尝试过
PF('pinDialog')。show
没有成功。我做错了什么?

如果您希望在页面加载之外的其他时间显示对话框,则需要在对话框窗体上使用“呈现”属性

<p:panelGroup id="mainPanel">
   <p:dialog rendered="#{myBean.showForm}"
   </p:dialog>
</p:panelGroup>


与呈现位置的答案冲突的初始值必须为true(默认值),以便后续的任何操作都能找到它。如果为false,服务器将不会生成HTML,Javascript DOM操作无法找到它。@jmkgreen这就是为什么我有外部的p:panelGroup,在这种情况下,所有HTML都是在对话框未呈现的情况下生成的。。。这里是你给我的链接的复制/粘贴“你需要将它包装在一个容器组件中,这个容器组件总是呈现的,因此在HTMLDOM树中总是可用的。”因此JSF将HTML发送到浏览器(无对话框)。接下来我们在bean中执行什么?无法使用
RequestContext.getCurrentInstance().execute(“pinDialog.show()”)pinDialog
。您是否建议我们可以在对话框中动态设置
渲染
,它将显示在浏览器中?也许我的方法过于复杂,但您是否遵循了教程?你的例子看起来有点不同。在p:dialog中还有一个h:form,我只能假设它位于另一个h:form中,这意味着将有嵌套的表单,这是一件坏事。尝试删除表单tagYes,我已经根据教程进行了测试。很多年前,我就被嵌入的形状烧死了。现在我正在将
idleMonitor
转换为使用
p:ajax
,希望能够打开客户端的对话框。
<p:panelGroup id="mainPanel">
   <p:dialog rendered="#{myBean.showForm}"
   </p:dialog>
</p:panelGroup>