1

すべての URL 要求パラメーターが設定された後、JSF1.1 Bean の初期化を実行する必要があります。そうする良い方法はありますか?たとえば、manage-bean が以下のように faces-config でセットアップされている場合、そこにあるすべてのパラメーター (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 以降でのみ利用可能です。

最善の策は、管理プロパティのセッター メソッドで遅延実行することです。例えば

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 に答える