1

SelectOneMenuに問題があります。私はこれを書きます:

<h:selectOneMenu id="listaEstados"
        styleClass="comboboxStyle" 
        value="#{detalleSistemaBean.sistema.indEstado}" 
        immediate="true">
    <f:selectItems value="#{detalleSistemaBean.indEstados}" />
</h:selectOneMenu>
<h:commandButton id ="SubmitModificar"
    value="Modificar"
    styleClass="botonPeque"
    action="#{detalleSistemaBean.modificaSistema}">
</h:commandButton>  

しかし、リスト「indEstados」から1つの値を選択してフォームを送信しても、Bean「sistema.indEstado」は変更されません。BeanプロパティがメソッドmodificaSistemaの直前で変更されることを確認しましたが、このメソッド内(データベース接続とSQLセンテンスがある場合)では、「sistema.indEstado」は元の値に戻ります。なぜこれが起こるのですか?valueChangeListenerを使用して値を保存しようとしましたが、それは機能しますが、それは適切な解決策ではないと思います。

4

2 に答える 2

2

これは、Beanクラスの(ポスト)コンストラクター内ではなく、getterメソッド内でデータの読み込みを行っている場合に発生する可能性があります。

マネージドBeanコードを修正して、プロパティを返す以外にgetterメソッド内で何もしないようにします。

つまり、しません

public Sistema getSistema() {
    return sistemaService.find(someSistemaId);
}

むしろします

private Sistema sistema;

@PostConstruct
public void init() {
    sistema = sistemaService.find(someSistemaId);
}

public Sistema getSistema() {
    return sistema;
}
于 2012-03-12T12:56:32.610 に答える
1

設定せずに試すことができます

 immediate="true"

即時="true"のJSFコマンドボタン

于 2012-03-12T11:44:01.193 に答える