0

我有这段代码,它显示了一个带有素数面孔数据表和行编辑器列的表。当我单击铅笔图标时,可编辑模式已启用,但之后,当我单击检查或取消图标时,没有任何反应,可编辑模式仍处于活动状态。我已经搜索了很多,但我找不到回应。不调用支持 bean 上的侦听器。

这是我的视图代码:

<p:dataTable var="vac" value="#{vacDocBean.obl}" id="documentacion" editable="true"> 
    <f:facet name="header">  
      Table
    </f:facet>  

    <p:ajax event="rowEdit" update="@this" listener="#{vacDocBean.onEditRow(_record)}" />

    <p:column headerText="Edad">#{vacuna.inm.e}</p:column> 
    <p:column headerText="Inm">#{vac.inm.n}</p:column>       


   <p:column headerText="Fecha aplicacion">  
    <p:cellEditor>  
            <f:facet name="output">  
               <h:outputText value="#{vac.fechaAplicacion}">  
                     <f:convertDateTime pattern="dd/MM/yyyy"/>  
                </h:outputText>  
            </f:facet>  
            <f:facet name="input"> 
                 <p:calendar value="#{vac.fechaAplicacion}" style="width:100%"/>  
            </f:facet>  
        </p:cellEditor>  
   </p:column> 
   <p:column headerText="Marca">  
    <p:cellEditor>  
            <f:facet name="output">  
                <h:outputText value="#{vac.marca}" />  
            </f:facet>  
            <f:facet name="input">  
                <p:inputText value="#{vac.marca}" style="width:100%"/>  
            </f:facet>  
        </p:cellEditor>  
   </p:column> 
   <p:column headerText="Lote">  
    <p:cellEditor>  
            <f:facet name="output">  
                <h:outputText value="#{vac.lote}" />  
            </f:facet>  
            <f:facet name="input">  
                <p:inputText value="#{vac.lote}" style="width:100%"/>  
            </f:facet>  
        </p:cellEditor>  
   </p:column> 
    <p:column headerText="Editar" styleClass="ui-editable-column-options">  
      <!--  <p:commandLink  ajax="true">-->
              <p:rowEditor  />
      <!--  </p:commandLink >     -->   
    </p:column>  
     <f:facet name="footer">  
         Vacunación documentada
    </f:facet> 

</p:dataTable> 

和支持bean:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.mycompany.calendario;

@Named(value="vacDocBean")
@SessionScoped
public class VacDocBean implements Serializable {  

    private List<Vac> obl;

    public VacDocBean() {  

        obl = new ArrayList<Vac>();
        setVac();
        Collections.sort(obl);
    } 

    private void setVac()
    {
        this.obl = new ArrayList(Helper.getObl());
    }

    public List<Vac> getObl() {
        return obl;
    }

    public void setObligatorias(List<Vac> obl) {
        this.obl = obl;
    }

    public void onEditRow(RowEditEvent e){

        System.out.println("Hello");

    }

    public void onCancel(RowEditEvent e){

        System.out.println("Hello 2");

    }

} 

谢谢!!

4

1 回答 1

0

h:datatable只需用标签包围你h:form,因为可编辑的数据表需要它。

要使您的侦听器方法起作用,请尝试这样做,而无需更改方法的签名:

<p:ajax event="rowEdit" listener="#{vacDocBean.onEditRow}" />
于 2013-07-03T08:21:05.830 回答