2

つまり、グリッドに空の行を追加するということです。セルエディターでプライムフェイスを使用することを最初に考えたので、値は Bean リストのリストに格納されますが、私が抱えている問題はカレンダーで、1つを選択して保存するとリストに保存され、ajaxイベントを実行しないことを確認すると、日付の値が失われます。

<p:commandButton value="Añadir dia" update="dataTable" actionListener="#{regDPNL.registrarNuevoDia}" />

<p:dataTable id="dataTable" var="dpnl" value="#{regDPNL.listdpnl}" paginatorPosition="top"
 rows="20" rowIndexVar="rowIndex" editable="true" editMode="cell"  

   <p:ajax event="cellEdit" listener="#{regDPNL.onCellEdit}" />                

   <p:column width="25%">  
      <f:facet name="header">  
         <h:outputText value="NOMBRE" />  
      </f:facet>
      <p:cellEditor>  
         <f:facet name="output"><p:inputText value="#{dpnl.nombre}" /></f:facet>  
         <f:facet name="input"><p:inputText value="#{dpnl.nombre}" /></f:facet>  
      </p:cellEditor>  
   </p:column>

   <p:column width="20%">  
      <f:facet name="header">  
         <h:outputText value="DESDE" />  
      </f:facet>
      <p:cellEditor> 
         <f:facet name="output"><p:inputText value="#{dpnl.fechaDesde}" /></f:facet>  
         <f:facet name="input"><p:calendar value="#{dpnl.fechaDesde}" pattern="dd/MM/yyyy" /></f:facet>  
      </p:cellEditor>  
   </p:column>

   <p:column width="20%">  
      <f:facet name="header">  
         <h:outputText value="HASTA" />  
      </f:facet>
      <p:cellEditor>  
         <f:facet name="output"><p:inputText value="#{dpnl.fechaHasta}" /></f:facet>  
         <f:facet name="input"><p:calendar value="#{dpnl.fechaHasta}" pattern="dd/MM/yyyy" /></f:facet>  
      </p:cellEditor> 
   </p:column>

   <p:column width="5%">  
      <f:facet name="header">  
         <h:outputText value="ELIMINAR" />  
      </f:facet>  
      <p:commandButton icon="ui-icon-editar" title="Delete Periodo" style="background:#fff">  
      </p:commandButton>
   </p:column> 
</p:dataTable>

Java コード:

private List<DetallePeriodoBean> listdpnl = new PeriodoNoLaborable();
private DetallePeriodoBean detallePeriodoNoLaborable = new ArrayList<DetallePeriodoBean>();

public void registrarNuevoDia() {                
   detallePeriodoNoLaborable = new DetallePeriodoBean();
   this.listdpnl.add(detallePeriodoNoLaborable);
}

public void onCellEdit(CellEditEvent event) {  
   Object oldValue = event.getOldValue();  
   Object newValue = event.getNewValue();    
   if(newValue != null && !newValue.equals(oldValue)) {  
      System.out.println("==> Old: " + oldValue + ", New:" + newValue);
   } 
}

http://s2.subirimagenes.com/imagen/previo/thump_8690487captura.png

4

3 に答える 3

0

output という名前のファセットで、p:inputText の代わりにタグ h:outputText を使用します

于 2014-01-18T02:23:13.797 に答える