PrimeFaces <p:celleditor>没有改变变量

时间:2016-07-26 20:17:45

标签: primefaces xhtml jsf-2.2 tablecelleditor

我做了一些研究,但却找不到任何直接解决我一直遇到的问题的方法。

我有一个可编辑的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页面中基本上具有完全相同的设置,并且我能够毫无问题地编辑每个单元格。不确定导致这个问题的原因是什么。

2 个答案:

答案 0 :(得分:1)

添加Ajax事件cellEdit并存储值

答案 1 :(得分:1)

添加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 Class

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);   
      }
    } 
}