3

dataTable から選択値を取得してマネージド Bean に設定したいのですが、マネージド Bean では null を設定するだけです。選択値を設定するにはどうすればよいですか?

 <h:form id="formcancel">
    <p:dataTable id="tablaprecan" var="xd" value="#{cancelacionMB.resultados}" rowKey="#{xd.folio}"
                 selection="#{cancelacionMB.cliente}" selectionMode="single" >
        <f:facet name="header">
            Solicitudes de Precancelacion
        </f:facet>

        <p:column headerText="Folio">
            <h:outputText value="#{xd.folio}" />
        </p:column>

        <p:column headerText="Cliente">
            <h:outputText value="#{xd.id_cliente}" />
        </p:column>

        <p:column headerText="Nombre del Cliente">
            <h:outputText value="#{xd.nombre_cliente}" />
        </p:column>

        <p:column headerText="Fecha Precancelacion">
            <h:outputText value="#{xd.timestamp_precancelacion}" />
        </p:column>
        <f:facet name="footer">
            <p:commandButton id="viewButton" value="Cancelar Banca" icon="ui-icon-gear"
                             update="tablaprecan" actionListener="#{cancelacionMB.cancelarBE}" rendered="true" />
        </f:facet>
    </p:dataTable>
</h:form>

これは、私の Managed Bean プライベート CancelacionMB クライアントです。

public CancelacionMB getCliente() {
    return cliente;
}

public void setCliente(CancelacionMB cliente) {
    this.cliente = cliente;
}
4

1 に答える 1

1

このコンストラクトは、Bean がリクエスト スコープであり、(ポスト) コンストラクト中にデータが保持されず、何らかのアクション メソッド中にのみ保持される場合に失敗します。リクエスト スコープ Bean は、レスポンスの終わりまでにガベージされます。行を選択してフォームを送信すると、すべてのプロパティがデフォルトに設定された新しい行が作成されます(または(ポスト)コンストラクターが作成したものは何でも)。

検索フォームを送信した後など、何らかのアクション メソッドでデータを準備している場合は、後続のポストバック リクエスト間でデータを維持するために、Bean をビュー スコープに配置する必要があります。

@ManagedBean
@ViewScoped
public class CancelacionMB {
    // ...
}

以下も参照してください。

于 2012-12-20T10:57:58.527 に答える