我有一个带有按钮的表单,可以打开一个 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 的变量。

关于jsf-2 - Primefaces动态overlayPanel只显示一次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15656856/

10-09 03:48