0

我有 ap:outputPanel,如果我有一个带有数据的 Java 对象,我想渲染它。如果对象为空,我不想渲染面板。

<h:form id="treeform">
    <p:outputPanel id="outputComponent" rendered="#{TreeViewController.compProfile}">
        <div>
            .........
        </div>
    </p:outputPanel>
</h:form>

public boolean getCompProfile()
{

    if (cd == null)
    {
        return false;
    }
    else
    {
        return true;
    }
}

我注意到代码工作正常。如果对象为 null,则布尔值为 false 并且不显示面板。但是我发现的问题是,当我再次进行 AJAX 调用时,无论 Java 对象是否为空,布尔值始终为 false。我可以在 AJAX 调用后以某种方式配置 p:outputPanel 以检查#{TreeViewController.compProfile}要呈现或不呈现面板的属性。

4

1 回答 1

9

改变

<p:outputPanel id="outputComponent" rendered="#{TreeViewController.compProfile}">

进入

<p:outputPanel autoUpdate="true">
    <p:outputPanel  id="outputComponent" rendered="#{TreeViewController.compProfile}">
</p:outputPanel>

或者不要添加包装器并将treeformid 添加到您update的 ajax 属性中(p:ajaxp:commandButton

像这样update="treeform"

于 2013-02-11T22:51:47.887 回答