<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内。有人可以为此提供帮助吗?
答案 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覆盖方法。