2015-05-21 7 views
5

Ich versuche, eine bearbeitbare DataTable Zelle in Primefaces zu machen, aber nach einer Bearbeitung einer Zelle, das Ereignis nicht gesendet und mein Code kann den newValue nicht erkennen, und es gibt oder kein Fehler in dem Stack-Trace logCellEdit-Ereignis funktioniert nicht nach Zelle bearbeiten in Primzahlen

hier ist mein Code:

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

Haben Sie eine 'h haben war: arround Ihre Datentabelle form'? –

+0

@ Mathieu Castets: ja ich habe – Spartan

+0

Was passiert, wenn Sie 'update =" ListC "' in Ihrem 'p: ajax' entfernen? Wird deine Bean-Methode aufgerufen? –

Antwort

3

versuchen, das Attribut immediate="true" in der in dem Tag p hinzuzufügen: Ajax und meine Bean-Methode namens

<p:ajax event="cellEdit" 
     update="ListC" 
     immediate="true" 
     listener="#{recruitmentProcessMB.onCellEdit}" 
     process="@this" 
/> 
Verwandte Themen