我需要在设置所有URL请求参数后执行JSF1.1 bean的初始化。有这么好的方法吗?例如,如果在下面的faces-config中设置了manage-bean,我需要在所有param(Param1,2,3)设置完毕后执行一些初始化。
<managed-bean>
<managed-bean-name>someBean</managed-bean-name>
<managed-bean-class>com.arch.SomeBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>param1</property-name>
<value>#{param.param1}</value>
</managed-property>
<managed-property>
<property-name>param2</property-name>
<value>#{param.param2}</value>
</managed-property>
<managed-property>
<property-name>param3</property-name>
<value>#{param.param3}</value>
</managed-property>
</managed-bean>
答案 0 :(得分:3)
通常,您可以使用@PostConstruct
带注释的方法,但只有JSF 1.2才支持@PostConstruct
。
最好的办法是在托管属性的setter方法中懒惰地执行它。 E.g。
public void setParam3(String param3) {
boolean wasNull = this.param3 == null;
this.param3 = param3;
if (wasNull) {
init();
}
}
或者,只需升级到JSF 1.2即可。 JSF 1.1与JSF 1.2完全向前兼容,代码没有任何变化(期望代码,你错误地认为JSF 1.1特定的bug是正确的行为)。