Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 将primefaces数据表单元格编辑值更新到数据库。_Jsf 2_Primefaces_Datatable - Fatal编程技术网

Jsf 2 将primefaces数据表单元格编辑值更新到数据库。

Jsf 2 将primefaces数据表单元格编辑值更新到数据库。,jsf-2,primefaces,datatable,Jsf 2,Primefaces,Datatable,我试图在调用ajax onCellEdit事件方法时将datatable单元格编辑值更新到数据库中。在该方法中,我使用单元格编辑列的标题名和更新查询中获得的新值,并且工作正常。但在我的实际数据库中,字段名与标题名不同,我无法更改数据库字段名,并且我无法将数据库字段名称包括到datatable标头。请帮助我如何更新到数据库 我使用JDBC进行数据库操作 我的JSF页面 <h:form id="form"> <p:growl id="messages" showDetail=

我试图在调用ajax onCellEdit事件方法时将datatable单元格编辑值更新到数据库中。在该方法中,我使用单元格编辑列的标题名和更新查询中获得的新值,并且工作正常。但在我的实际数据库中,字段名与标题名不同,我无法更改数据库字段名,并且我无法将数据库字段名称包括到datatable标头。请帮助我如何更新到数据库

我使用JDBC进行数据库操作

我的JSF页面

<h:form id="form">

  <p:growl id="messages" showDetail="true" />

  <p:dataTable id="multiCars" var="car"
     value="#{tableBean.mediumCarsModel}" paginator="true" rows="10"
     selection="#{tableBean.selectedCars}" editable="true" editMode="cell">

     <f:facet name="header"> 
        Checkbox Based Selection 
    </f:facet>
     <p:ajax event="cellEdit" listener="#{tableBean.onCellEdit}"
        update=":form:messages" />

     <p:column selectionMode="multiple" style="width:2%" />


     <p:column headerText="Model" style="width:25%">
        <p:cellEditor>
           <f:facet name="output">
              <h:outputText value="#{car.model}" />
           </f:facet>
           <f:facet name="input">
              <p:inputText id="modelInput" value="#{car.model}"
                 style="width:96%" />
           </f:facet>
        </p:cellEditor>
     </p:column>

     <p:column headerText="Year" style="width:25%">
        <p:cellEditor>
           <f:facet name="output">
              <h:outputText value="#{car.year}" />
           </f:facet>
           <f:facet name="input">
              <p:inputText value="#{car.year}" style="width:96%" label="Year" />
           </f:facet>
        </p:cellEditor>
     </p:column>

     <p:column headerText="Manufacturer" style="width:25%">
        <p:cellEditor>
           <f:facet name="output">
              <h:outputText value="#{car.manufacturer}" />
           </f:facet>
           <f:facet name="input">
              <p:inputText value="#{car.manufacturer}" style="width:96%"
                 label="Year" />
           </f:facet>
        </p:cellEditor>
     </p:column>


     <p:column headerText="Color" style="width:25%">
        <p:cellEditor>
           <f:facet name="output">
              <h:outputText value="#{car.color}" />
           </f:facet>
           <f:facet name="input">
              <p:inputText value="#{car.color}" style="width:96%" label="Year" />
           </f:facet>
        </p:cellEditor>
     </p:column>

     <f:facet name="footer">
        <p:commandButton id="multiViewButton" value="View"
           icon="ui-icon-search" actionListener="#{tableBean.getSelection}" />
     </f:facet>
  </p:dataTable>
}

public void onCellEdit(CellEditEvent event) { 
  System.out.println("inside cell edit");

  UIColumn col= event.getColumn();
  DataTable o=(DataTable) event.getSource();
  Object oldValue = event.getOldValue();  //here i get old value
  Object newValue = event.getNewValue(); //new value
  Car info=(Car)o.getRowData();
  String newModel=info.getModel();//primary key

  System.out.println("row index in event method "+event.getRowIndex());
  System.out.println("old value"+oldValue);
  System.out.println("new value"+newValue);
  System.out.println("column2 :"+col.getHeaderText());//header text value


  try{


     updateStmt=connection.createStatement();


     String query = "update test set " + col.getHeaderText() +"= '"+ newValue +"' where Model = '"+newModel+"'";

     int i=updateStmt.executeUpdate(query);
     if(i!=0)
        System.out.println("updated!!!");
     else
        System.out.println("not updated!!!");

  }
  catch (Exception e) {
     e.printStackTrace();
  }


  if(newValue != null && !newValue.equals(oldValue)) { 
     FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Cell Changed", "Old: " + oldValue + ", New:" + newValue); 
     FacesContext.getCurrentInstance().addMessage(null, msg); 
  }