2015-05-21 19 views
5

tôi đang cố gắng để làm cho một DataTable Editable bởi tế bào trong Primefaces, nhưng sau khi một biên tập của một tế bào, sự kiện này không gửi và mã của tôi không thể phát hiện newValue, và có không có lỗi hoặc đăng nhập vào stack tracekiện CellEdit không làm việc, kể chỉnh sửa tế bào trong primefaces

đây là mã của tôi:

xhtml:

<p:dataTable id="ListC" 
    value="#{recruitmentProcessMB.candidateListInProcess}"   
    var="candid" rowKey="#{candid.idCandidate}" 
    style="border:0px; " editable="true" editMode="cell"> 

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

    <p:column headerText="Date d'entretien"> 
     <p:cellEditor> 
      <f:facet name="output"> 
       <h:outputText value="#{candid.interviewDateCandidate}"> 
        <f:convertDateTime type="date" dateStyle="short" 
         pattern="dd/MM/yyyy" timeZone="Europe/Paris" /> 
       </h:outputText> 
      </f:facet> 
      <f:facet name="input"> 
       <p:calendar id="date" 
        value="#{candid.interviewDateCandidate}" 
        navigator="true" pattern="dd/MM/yyyy" mask="true" /> 
      </f:facet> 
     </p:cellEditor> 
    </p:column> 

    <p:column id="vRH" headerText="Validation Par RH " disabledSelection="#{candid.currentTask!='InterviewAndValidationByRH'}"> 
    <p:cellEditor > 
     <f:facet name="output"> 
     <h:outputText 
      value="#{candid.decisionOfRh}" /> 
      </f:facet> 
     <f:facet name="input"> 
      <h:selectOneMenu id="rhDecision" style="display: inline-block;" 
         value="#{candid.decisionOfRh}" 
         disabled="#{candid.currentTask!='InterviewAndValidationByRH'}" > 
      <f:selectItem itemLabel="Selectionner..." /> 
      <f:selectItem itemLabel="Accepté" itemValue="Accepté"/> 
      <f:selectItem itemLabel="Refusé" itemValue="Refusé"/> 
     </h:selectOneMenu> 
     </f:facet> 
     </p:cellEditor> 
    </p:column> 
</p:dataTable> 

Bean:

public void onCellEdit(CellEditEvent event) { 
      FacesContext context = FacesContext.getCurrentInstance(); 
      Candidate c = context.getApplication().evaluateExpressionGet(
        context, "#{candid}", Candidate.class); 

      System.out.println("+++++++++++ "+c.getFirstNameCandidate()+" "+c.getNameCandidate()); 
      System.out.println("*********** "+event.getNewValue().toString()); 
      logger.info(c.getInterviewDateCandidate().toString()); 
} 
+0

Bạn có 'h: form' arround DataTable của bạn? –

+0

@ Mathieu CastetsKhách: yes i có – Spartan

+0

gì sẽ xảy ra nếu bạn loại bỏ 'update = "ListC" 'trong' p của bạn: ajax'? Là phương pháp đậu của bạn được gọi là? –

Trả lời

3

cố gắng thêm thuộc tính immediate="true" trong trong thẻ p: ajax và phương pháp đậu của tôi được gọi

<p:ajax event="cellEdit" 
     update="ListC" 
     immediate="true" 
     listener="#{recruitmentProcessMB.onCellEdit}" 
     process="@this" 
/> 
Các vấn đề liên quan