webMethods: Show/hide caf_h:panelBlock 基于支持 bean 的 属性 值

webMethods: Show/hide caf_h:panelBlock based on property value of backing bean

我们在 CAF portlet 中有两个 caf_h:panelBlock 元素(id="panel1"id="panel2"),它们应该基于支持 bean 的 属性 呈现(rendered="#{ViewBean.property}"rendered="#{not ViewBean.property}")。

所以这样一个面板的XHTML锁如下:

<caf_h:panelBlock id="panel1" rendered="#{ViewBean.property}">
    content
</caf_h:panelBlock>

backing bean的属性声明如下:

private java.lang.Boolean property;

并在bean的Initialize()方法中初始化:

public String initialize() {
    this.property = true;
}

棘手的部分现在来了:我们想通过单击命令 link:

show/hide 这些面板
<caf_h:commandLink action="#{ViewBean.click}" id="commandLink"></caf_h:commandLink>

此命令 link 调用的 bean 方法依次更改 属性 的值:

public String click() {
    this.property = false;
}

然而,块面板的 visibility/rendering 完全不受影响。可能是什么原因?

事实证明,如果 ViewBean.property 在 portlet 生命周期的后期没有再次更改,上述方法可以正常工作 - 正如我们在 beforeRenderResponse() 方法中不小心所做的那样。