我正在使用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");
}
}
答案 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")