1

在设置所有 URL 请求参数后,我需要执行一些 JSF1.1 bean 的初始化。有什么好的方法吗?例如,如果在 faces-config 中设置了 manage-bean,如下所示,我需要在设置所有参数 (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> 
4

1 回答 1

3

通常,您会为此使用带@PostConstruct注释的方法,但@PostConstruct仅从 JSF 1.2 起才提供对的支持。

最好的办法是在托管属性的 setter 方法中懒惰地执行它。例如

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 特定错误是正确行为的代码)。

于 2013-05-24T13:17:35.483 回答