JSF2 Spring 仅在 TomcatStartup 上管理 Bean 调用构造函数和 Postconstruct



>我正在使用JSF+Spring项目,我的弹簧豆是ViewScoped

我的保存状态是客户端。

<context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>client</param-value>
    </context-param>

以下是我的 bean,我发现 bean 和 postconstructa 方法的构造函数仅在 tomcat 启动时被调用,当它是 spring管理的 bean 而不是如果它是 JSF 管理的 bean 构造函数并且 postconstructor 在每次页面刷新时都会被调用。如果我想在每次在 Spring 管理的 bean 下在页面刷新时调用方法,这是真正的行为吗?

@Component
@ViewScoped
public class DataTableBean implements Serializable{
public DataTableBean() {
        super();
}
@PostConstruct
    private void loadDataData(){
        System.out.println("Post constructing");
    }
}

@Component 是 Spring 特定的注释,用于按 Spring 管理 bean。@ViewScoped是特定于 JSF 的注释,用于指定 JSF 管理的 Bean @ManagedBean 的范围。JSF 特定的范围注释在 Spring 管理的 Bean 上根本不起作用。您应该改用 Spring 特定的@Scope注释。

因此,要么通过 JSF 管理 bean:

@ManagedBean
@ViewScoped

或者原生种植一个 Spring "视图"范围(即这不是 Spring 中可用的默认范围之一(:

@Component
@Scope("view")

最新更新