让我们有一个非常简单的复合材料部件:

<cc:implementation>
    #{testBean.someField}
</cc:implementation>

豆为它:

public class TestBean {

    private boolean someField = false;
    public boolean getSomeField() { return someField; }

    @PostConstruct
    public void init() {
        System.out.println("PostConstruct");
    }

}

然后调用它像往常一样,但不显示它:

<codeEditor:test rendered="#{false}" />

什么情况是,该组件是从来没有提供,而该bean是从未启动正如人们所想。

然而,如果改变成分为:

<cc:implementation>
    <h:outputText value="#{testBean.someField}" />
</cc:implementation>

什么情况是,该组件还从来没有被渲染(因为rendered属性是false),但是,豆不实例化。出现这种情况总是当我们用一个bean属性一些本地的JSF组件内部(h:panelGrouph:inputHidden,等等)。

为什么会这样?

有帮助吗?

解决方案

将成分(和所有绑定豆)得到期间视图生成时创建。所呈现的属性视图渲染时间期间仅被评估。它一贯致力于这样的JSF。

如果该bean是做施工过程中的一些昂贵的工作,那么我建议,让昂贵的工作依赖于某些条件,你再重用的渲染属性。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top