【问题标题】:JSF 2 get index row datatableJSF 2 获取索引行数据表
【发布时间】:2014-08-08 23:22:38
【问题描述】:

我想知道如何获取数据表的行索引,我的代码是

<p:dataTable 
    id="idDataTableItemArticulo" 
    var="articuloEspecificado" 
    value="#{ordenIngresoBean.oiu.articuloEspecificadoModel}"
    paginator="true" 
    rows="5"  
    rowIndexVar="row" 
    paginatorPosition="bottom"
    paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
    rowsPerPageTemplate="5"  
    emptyMessage="Lista de Proveedores vacia" 
    editable="true" 
    editMode="cell">  

    <p:column 
        width="25px;" 
        style="text-align:center;">

        <f:facet name="header">
            <h:outputLabel value="Nro"/>
        </f:facet>
        <h:outputText value="#{row+1}" />

    </p:column>

    <p:column width="70px;" style="text-align:center;">  

        <f:facet name="header">  
            <h:outputText value="Nro de Serie" />  
        </f:facet>  
        <p:inputText 
            id="idInNroSerie" 
            value="#{articuloEspecificado.numeroSerie}" 
            size="15" 
            onclick="this.select();"
            required="#{not empty param[bndGuardar.clientId]}" 
            requiredMessage="Ingrese Serie">
            <p:clientValidator event="keyup"/>
        </p:inputText>  
        <p:message for="idInNroSerie" display="text"/>

    </p:column>  

    <p:column width="70px;" style="text-align:center;" >  

        <f:facet name="header">  
            <h:outputText value="Codigo de Barras" />  
        </f:facet>  
        <p:inputText 
            value="#{articuloEspecificado.nroCodigoBarras}" 
            size="15" 
            onclick="this.select();"/>  

    </p:column>

    <p:column width="70px;" style="text-align:center;" headerText="Estado">  

        <p:cellEditor>
            <f:facet name="output">
                <h:outputText value="#{articuloEspecificado.estadoUsoArticulo.nombre}"/>
            </f:facet>
            <f:facet name="input">
                <h:selectOneMenu value="#{articuloEspecificado.codigoEstado}" style="width:100%">

                    <f:selectItems 
                        value="#{ordenIngresoBean.oiu.lstEstadoUsoArticulo}" 
                        var="eua" 
                        itemLabel="#{eua.nombre}" 
                        itemValue="#{eua}" />

                    <p:ajax 
                        event="change" 
                        listener="#{ordenIngresoBean.seleccionarEstado}">

                        <f:setPropertyActionListener 
                            value="#{row}" 
                            target="#{ordenIngresoBean.oiu.index}" />

                    </p:ajax>

                </h:selectOneMenu>
            </f:facet>
        </p:cellEditor>

    </p:column>

</p:dataTable>

在celleditor的selectOneMenu事件中我得到了行索引。

bean中的方法是:

public void seleccionarEstado(AjaxBehaviorEvent event) {
    System.out.println(" *** seleccionarEstado *** ");
    System.out.println("Index: "+oiu.getIndex());
}

对象oiu是:

public class OrdenIngresoUtil implements Serializable { 

private boolean lstArticuloEspecificadoVacia;
private Integer cantidad;
private Integer idSerie;
private Integer indexArticuloAlmacen;
private Integer index;
private String nroSerie;
private String numero; ..... more attributes and setter and getter

}

但是我没有得到该行的值,它是空的,为什么?

谢谢

【问题讨论】:

  • 什么是托管 bean 范围?
  • 您想从数据表中获取所选行的值吗?
  • 是的,我要获取该行对象的索引
  • 选择不适用于selectOneMenu事件,所以对象始终为null

标签: jsf-2 primefaces jsf-2.2


【解决方案1】:

这并不优雅,但可能会解决您的问题。

public void seleccionarEstado(AjaxBehaviorEvent event) {
    String x = ((HtmlSelectOneMenu)event.getSource()).getClientId();        
    System.out.println(x.split(":")[2]);
}

注意 x 将返回类似的东西(名称可能会有所不同,因为这些 id 是生成的)

j_idt6:idDataTableItemArticulo:0:j_idt19
                              ^^^

你对上面的索引感兴趣。

【讨论】:

    猜你喜欢
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 2023-03-06
    • 2010-09-22
    • 1970-01-01
    • 2013-01-15
    相关资源
    最近更新 更多