如何模拟@postConstruct
JSF 1.1 中的行为,就像在 JSF 1.2 和更新版本中一样?
实际上,我想在页面加载期间自动调用一个 bean 方法?
我在 JSF 1.1 上使用 IceFaces 1.8。
如何模拟@postConstruct
JSF 1.1 中的行为,就像在 JSF 1.2 和更新版本中一样?
实际上,我想在页面加载期间自动调用一个 bean 方法?
我在 JSF 1.1 上使用 IceFaces 1.8。
的要点@PostConstruct
是提供一个钩子来在设置所有托管属性(如or )并且所有依赖注入(例如,等)都发生之后执行一些代码。<managed-property>
@ManagedProperty
@EJB
@Resource
@Inject
如果你没有它们,只需使用 bean 的构造函数。
public class Bean {
public Bean() {
// Just do your job here. Don't do it the hard way.
}
// ...
}
或者,如果您确实想在设置特定属性时执行它,则在设置器中执行该工作,同时对当前属性值进行空值检查。
public class Bean {
private SomeObject someManagedProperty;
public void setSomeManagedProperty(someManagedProperty) {
if (this.someManagedProperty == null && someManagedProperty != null) {
// First-time set, now you can do your job here.
}
this.someManagedProperty = someManagedProperty;
}
// ...
}
根据评论更新:
我的意思是每次加载页面时都执行该方法
@PostConstruct
不这样做。但是,如果 bean 是请求范围的,那么您将看到相同的效果。您似乎正在使用会话或应用程序范围的托管 bean 来管理请求范围的数据。这本质上是错误的。您应该将其转换为请求范围的 bean。任何真正的会话范围数据都可以拆分为一个会话范围的 bean,然后您可以通过<managed-property>
.