PrimeFaces ‹p:cellEditor› не меняет значение переменной

Я провел некоторое исследование и не смог найти ничего, что непосредственно решает проблему, с которой я столкнулся.

У меня есть столбец DataTable, который можно редактировать (по ячейке), и у меня есть возможность щелкнуть ячейку, ввести новый номер в поле редактора ячеек, но когда я нажимаю, редактор ячеек закрывается, но не сохраняет новое значение (то же самое это произойдет, если вы просто щелкнете и не нажмете Enter).

Вот фрагмент кода

<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, и я могу без проблем редактировать каждую из ячеек. Не уверен, что заставляет меня ошибаться.


person AHijaouy    schedule 26.07.2016    source источник


Ответы (2)


Добавьте ячейку события AjaxEdit и сохраните значения

person Guru Bala    schedule 27.07.2016
comment
Что именно вы подразумеваете под сохранением значений? Можете ли вы привести пример? - person AHijaouy; 27.07.2016
comment
См., например, ссылку: primefaces.org/showcase/ui/data/ datatable/edit.xhtml - person Guru Bala; 28.07.2016

Добавьте событие 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);   
      }
    } 
}
person Guru Bala    schedule 28.07.2016