2016-07-26 53 views
0

我已經做了一些研究,一直沒能找到任何直接解決我一直存在的問題。PrimeFaces <p:cellEditor>不改變變量的值

我有一個DataTable列是可編輯的(按單元格),我有能力點擊單元格,在單元格編輯框中輸入一個新數字,但是當我點擊單元格編輯器時關閉但不保存新的價值(同樣的事情發生,如果你只是點擊關閉,而不是輸入)。

這裏是代碼片段

<h:form> 
    <c:forEach items="#{extensionsBean.getPhases()}" var="phase"> 
     <p:fieldset legend="#{phase.getPhaseName()}"> 
      <p:dataTable value="#{extensionsBean.getActivities(phase)}" var="activity" editable="true" editMode="cell"> 
       <p:column> 
        <f:facet name="header"> 
         <h:outputText value="Actual Hours"/> 
        </f:facet> 
         <p:cellEditor> 
           <f:facet name="output"> 
            <h:outputText value="#{activity.getEstimateDetail().actualHours}"/> 
           </f:facet> 
           <f:facet name="input"> 
            <h:inputText value="#{activity.getEstimateDetail().actualHours}" /> 
           </f:facet> 
         </p:cellEditor> 
        //the rest of the closing tags are present 

任何建議將是巨大的!對於記錄,我基本上在不同的xhtml頁面中完全相同的設置,並且我可以編輯每個單元格而沒有問題。不知道是什麼原因導致這個問題出現在我身上。

回答

0

添加AJAX事件cellEdit和存儲的值

+0

究竟你店裏的價值觀是什麼意思?你能提供一個例子嗎? – AHijaouy

+0

查看鏈接例如:http://www.primefaces.org/showcase/ui/data/datatable/edit.xhtml –

0

添加AJAX事件celledit和你在哪裏要保存的值上,你可以將它保存。 代碼低於在我的項目

XHTML頁面(Primefaces):

<p:dataTable var="my" value="#{java.custom_info}" editMode="cell" editable="true" style="font-size: 12px"> 

<p:ajax event="cellEdit" listener="#{java.custom_detail}"/> 
<p:column style="background: white"> 
    <h:outputText value="First Name"/> 
</p:column> 
<p:column style="background: white"> 
    <p:cellEditor> 
     <f:facet name="output"> <h:outputText value="#{my.first}"/> </f:facet> 
     <f:facet name="input"><p:inputText value="#{my.first}" placeholder="Enter First Name" style="width:93%"/></f:facet> 
    </p:cellEditor> 
</p:column> 

</p:dataTable> 

的Java類

public void custom_detail(CellEditEvent event){ 
    String old_str = (String) event.getOldValue(); 
    String first_name = (String) event.getNewValue(); 
    System.out.println("update method reached..."+first_name); 
    FacesContext fc = FacesContext.getCurrentInstance(); 
    HttpSession session = (HttpSession) fc.getExternalContext().getSession(false); 
    Query db = new Query(); 
    Customer bean = new Customer(); 
    if(session!=null){ 
     if(((String)session.getAttribute("login"))!=null){ 
      Calendar currentDate=Calendar.getInstance(); 
      SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
      String datenow=format.format(currentDate.getTime()); 
      session.setAttribute("firstname", first_name); 
      session.setAttribute("modified_date",datenow); 
      bean.setFirst(first_name); 
      bean.setUsrid((String)session.getAttribute("user")); 
      bean.setUsr_modified(datenow); 
      db.update_personalinfo(bean); 
     } 
    } 
}