Jsf p:OverlyPanel不显示内容

Jsf p:OverlyPanel不显示内容,jsf,primefaces,jsf-2.2,Jsf,Primefaces,Jsf 2.2,在上面的代码片段覆盖面板中,不显示内容,只显示一个空面板,但是如果我用硬编码的值替换该值,如value=“test”,我可以在覆盖面板中看到内容,当我用firebug检查页面时,我可以看到内容没有放在覆盖面板的div中。有人能帮上忙吗?试着像这样使用toString(): <h:form> <p:dialog> <p:outputPanel> <p:panelGrid>

在上面的代码片段覆盖面板中,不显示内容,只显示一个空面板,但是如果我用硬编码的值替换该值,如
value=“test”
,我可以在覆盖面板中看到内容,当我用firebug检查页面时,我可以看到内容没有放在覆盖面板的div中。有人能帮上忙吗?

试着像这样使用toString():

<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>


我也犯了同样的错误,这解决了它。并尝试确保您在bean中具有重写字符串的方法。

使
p:overlypanel
延迟加载可以解决问题。您可以通过在您的
p:overlypanel
上使用
dynamic=“true”
来实现它

此技术使
p:overlypanel
的内容不会在页面加载本身上呈现,而是在显示
p:overlypanel
之前呈现

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


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

这取决于如何将值设置为相应托管bean中的相应属性。检查,如果它真的设置了一个正确的值,并且在正确的时间段内。这些值设置正确,即使我可以在firebug中看到值,问题也不是在overlay panelUh的div中设置的!为什么不必要地使用
?相反,一个
就足够了。我想在弹出窗口中显示输出内容,这就是我使用OverlyPanelb的原因,但该值已经在字符串中,因此将字符串转换为字符串非常重要
<p:outputLabel id="linkPanel" value="#{bean.value.toString()}" />