p:overlayPanel不显示内容
p:overlayPanel does not show the content
<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 内。有人可以帮忙吗?
尝试像这样使用 toString() :
<p:outputLabel id="linkPanel" value="#{bean.value.toString()}" />
我遇到了同样的错误,这解决了它。并尝试确保您的 bean 中覆盖了 toString 方法。
使您的 p:overlayPanel
延迟加载可能会解决问题。您可以通过在 p:overlayPanel
上使用 dynamic="true"
来实现它。
此技术使您的 p:overlayPanel
的内容不会在页面本身加载时呈现,而是在显示 p:overlayPanel
之前呈现。
另一种方法是从 p:commandLink
更新您的 p:outputLabel
。
另一种方法是在 p:overlayPanel
的 widgetwar 上使用客户端 js 函数 loadContents()
。由于您将叠加层保留在数据表中,因此这可能不是一个可行的解决方案。
<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 内。有人可以帮忙吗?
尝试像这样使用 toString() :
<p:outputLabel id="linkPanel" value="#{bean.value.toString()}" />
我遇到了同样的错误,这解决了它。并尝试确保您的 bean 中覆盖了 toString 方法。
使您的 p:overlayPanel
延迟加载可能会解决问题。您可以通过在 p:overlayPanel
上使用 dynamic="true"
来实现它。
此技术使您的 p:overlayPanel
的内容不会在页面本身加载时呈现,而是在显示 p:overlayPanel
之前呈现。
另一种方法是从 p:commandLink
更新您的 p:outputLabel
。
另一种方法是在 p:overlayPanel
的 widgetwar 上使用客户端 js 函数 loadContents()
。由于您将叠加层保留在数据表中,因此这可能不是一个可行的解决方案。