设置请求参数后的初始JSF1.1 bean

时间:2013-05-24 12:54:21

标签: jsf

我需要在设置所有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> 

1 个答案:

答案 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是正确的行为)。