1

我正在使用 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 托管 bean 下每次都在页面刷新上调用方法,这是真正的行为吗? id 应该做什么?

@Component
@ViewScoped
public class DataTableBean implements Serializable{

public DataTableBean() {
        super();
}

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

1 回答 1

3

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

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

@ManagedBean
@ViewScoped

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

@Component
@Scope("view")
于 2012-05-18T12:54:37.067 回答