每次AJAX调用后渲染p:outputPanel

Pet*_*zov 0 jsf jsf-2

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

<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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*iel 8

更改

<p:outputPanel id="outputComponent" rendered="#{TreeViewController.compProfile}">
Run Code Online (Sandbox Code Playgroud)

<p:outputPanel autoUpdate="true">
    <p:outputPanel  id="outputComponent" rendered="#{TreeViewController.compProfile}">
</p:outputPanel>
Run Code Online (Sandbox Code Playgroud)

或者不添加包装器并将treeformid 添加到updateajax(p:ajaxp:commandButton)的attribue中

像这样 update="treeform"