Primefaces动态overlayPanel只显示一次

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Primefaces动态overlayPanel只显示一次相关的知识,希望对你有一定的参考价值。

我有一个带有按钮的表单,可打开Primafaces overlayPanel。在面板中有另一个按钮执行Ajax操作,然后关闭叠加层。 这是一个完全没有Ajax操作的简化版本:

<h:form>
    <p:commandButton id="button1" value="Open overlay" type="button"/>
    <p:overlayPanel for="button1" widgetVar="ovl" dynamic="true">
        <p:commandButton value="Close" oncomplete="ovl.hide();"
                         update="@form"/>
    </p:overlayPanel>
</h:form>

请注意,面板必须具有dynamic="true",因为必须在实际应用程序中获取动态内容,并且需要update="@form"才能更新其他表单组件。

问题是:如果我同时拥有属性,dynamic="true"update="@form",则叠加层仅在第一次显示。单击“关闭”按钮后,如果我再次单击“打开覆盖”,则面板将不会显示。

我究竟做错了什么?

(使用PrimeFaces 3.5和GlassFish 3.1.2.2)

答案

在按钮下降onclick="widgetVar.loadContents()"使用overlaypanel,其中widgetVaroverlayPanel的变量。

另一答案

我在下面的代码中注意到的是,只要在包含Open-Overlay按钮的表单上进行更新,它就会中断。

<h:form>
    <p:commandButton id="button1" value="Open overlay" type="button"/>
    <p:commandButton value="break things" update="@form" />
    <p:overlayPanel for="button1" dynamic="true">
        <p:commandButton value="Close" update="@form" />
    </p:overlayPanel>
</h:form>

如果可以将表单拆分为两个,嵌入在OverlayPanel中的按钮可以尝试调用单击用于切换叠加层的按钮。也许符合下面的内容。

<h:form>
    <p:commandButton id="button1" value="Open overlay" type="button"/>
    <p:overlayPanel for="button1" dynamic="true" >
        <p:commandButton value="Close" update=":formToBeUpdated" onclick="document.getElementById('button1').click();"/>
    </p:overlayPanel>
</h:form>

<h:form id="formToBeUpdated">
    <h:inputText value="bleh"/>
</h:form>
另一答案

你应该给你的overlayPanel一个id和oncompelete你的按钮显示它。代码如下:

<h:form>
   <p:commandButton id="button1" value="Open overlay" type="button" oncomplete="PF('ovlID').show()"/>
   <p:overlayPanel id="ovlID" for="button1" widgetVar="ovl" dynamic="true">
      <p:commandButton value="Close" oncomplete="ovl.hide();"
                     update="@form"/>
   </p:overlayPanel>
</h:form>

以上是关于Primefaces动态overlayPanel只显示一次的主要内容,如果未能解决你的问题,请参考以下文章

动态菜单primefaces 4.0

JSF:将页面动态包含到primefaces对话框中

无法在primefaces中动态更改按钮href

Primefaces TabView 动态

Primefaces 动态列不适用于延迟加载

动态 TabView primefaces,选项卡渲染属性不起作用