p:overlayPanel不显示内容

时间:2015-04-06 16:05:32

标签: jsf primefaces jsf-2.2

<h:form>
    <p:dialog>
        <p:outputPanel>
            <p:panelGrid>
                <p:row>
                    <p:column>
                        <p:commandLink value="link" id="myLink"/>
                        <p:overlayPanel  id="overPanel" for="myLink" >
                            <p:outputLabel id="linkPanel" value="#{bean.value}"/>
                        </p:overlayPanel>
                    </p:column>
                </p:row>
            </p:panelGrid>
        </p:outputPanel>
    </p:dialog>
</h:form>

在上面的代码段覆盖面板中没有显示内容,只显示了一个空面板,但是如果我用value="test"这样的硬编码替换该值,我可以看到覆盖面板中的内容,当我用firebug检查页面我可以看到内容没有放在覆盖面板的div内。有人可以为此提供帮助吗?

2 个答案:

答案 0 :(得分:1)

制作p:overlayPanel延迟加载可能会解决问题。您可以使用dynamic="true"上的p:overlayPanel来解决问题。

此技术使您的p:overlayPanel内容无法在页面加载时呈现,在显示p:overlayPanel之前呈现。

另一种方法是从p:outputLabel更新p:commandLink

另一种方法是在loadContents()的widgetwar上使用客户端js函数p:overlayPanel。由于您将叠加层保留在数据表中,因此这可能不是一个可行的解决方案。

答案 1 :(得分:0)

尝试使用toString(),如下所示:

<p:outputLabel id="linkPanel" value="#{bean.value.toString()}" />

我有同样的错误,这解决了它。并尝试确保在bean中使用toString覆盖方法。