我想知道如何获取数据的行索引,我的代码是
<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
}
但是我没有得到行的值,它是null,为什么?
由于
答案 0 :(得分: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
^^^
您对上述指数感兴趣。