jsf2 spring managed bean只在tomcatstartup上调用构造函数和postconstruct

时间:2012-05-18 12:48:25

标签: spring jsf-2 managed-bean

我正在使用JSF + Spring项目我的spring maanged bean是ViewScoped

我的保存状态是客户端。

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

以下是我的bean我发现bean和postconstruct方法的构造函数只有在tomcat启动时才调用,而它是Spring托管bean而不是JSF托管bean构造函数和postconstruct在每个页面刷新时调用。 如果我想每次在spring managed bean下调用方法页面刷新应该id做什么,这是真正的行为吗?

@Component
@ViewScoped
public class DataTableBean implements Serializable{

public DataTableBean() {
        super();
}

@PostConstruct
    private void loadDataData(){
        System.out.println("Post constructing");
    }
}

1 个答案:

答案 0 :(得分:3)

@Component是一个Spring特定的注释,用于管理Spring的bean。 @ViewScoped是一个JSF特定的注释,用于指定JSF托管bean @ManagedBean的范围。 JSF特定的范围注释根本不适用于Spring托管bean。您应该使用Spring特定的@Scope注释。

所以,要么只是通过JSF管理bean:

@ManagedBean
@ViewScoped

homegrow一个Spring“视图”范围(这不是Spring中可用的默认范围之一):

@Component
@Scope("view")