>我正在使用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")