【问题标题】:dataTable dont set the value in the Managed BeandataTable 不在托管 Bean 中设置值
【发布时间】:2012-12-19 23:53:26
【问题描述】:

我想从 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>

这是我的托管 Bean 私有 CancelacionMB 客户;

public CancelacionMB getCliente() {
    return cliente;
}

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

【问题讨论】:

    标签: jsf primefaces jsf-2


    【解决方案1】:

    如果 bean 是请求范围的,并且在(后)构造期间没有保留数据,但仅在某些操作方法期间,则此构造将失败。请求范围的 bean 在响应结束时被丢弃。当您选择一行并提交表单时,将创建一个全新的表单,其中所有属性都设置为默认值(或由 (post) 构造函数组成的任何内容)。

    如果您正在以某种操作方法准备数据,例如提交搜索表单后,您应该将 bean 放在视图范围内,以便在后续回发请求中保持数据活跃。

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

    另见:

    【讨论】:

    • 你好 BalusC,我正在使用它 @ManagedBean(name = "cancelacionMB") @SessionScoped 但现在我将其更改为 @ViewScoped 并且在我的构造中是相同的 `public CancelacionMB() { FacesContext context = FacesContext.getCurrentInstance(); HttpSession session = (HttpSession) context.getExternalContext().getSession(false); if (session != null) { LoginMB lmb = (LoginMB) session.getAttribute("user"); if (lmb != null) { this.user_cancelo = lmb.getUser(); } } }`
    • 你好,我用你的想法解决了,但是我已经把 faces-config.xml 改成了 cancelacionMBmx.org.banbicen.controller.CancelacionMBsession 我不知道为什么我的标签 @ManagedBean(name = "cancelacionMB") @SessionScoped 不起作用。非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 2014-07-17
    • 2013-02-19
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多