2014-11-06 45 views
0

我想编辑数据表行。我的代码在这里PrimeFaces + DataTable(编辑行)+休眠+ MYSQLDatabase

我ManagedBean

@ManagedBean 
@ViewScoped 
public class course implements Serializable{ 

private int course_Id ; 
private String course_Name; 
private Integer course_Hours ; 
private Date course_Date; 
private Double course_Prise ; 

SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy"); 
private String sd ; 


    getter and setter ..... 

    public void onRowEdit(RowEditEvent event) { 
    course c =((course) event.getObject()); 

     Transaction trn = null ; 
     Session session = HibernateUtil.getSessionFactory().openSession(); 
     trn = session.beginTransaction(); 
    c.setCourse_Id(getCourse_Id()); 
    c.setCourse_Name(getCourse_Name()); 
    c.setCourse_Hours(getCourse_Hours()); 
    c.setCourse_Prise(getCourse_Prise()); 
    c.setCourse_Date(getCourse_Date()); 

     session.update(c); 

      session.getTransaction().commit(); 

    FacesMessage msg = new FacesMessage("Course Edited", ((course) event.getObject()).getCourse_Name()); 
    FacesContext.getCurrentInstance().addMessage(null, msg); 
} 

我的JSF页面

 <?xml version='1.0' encoding='UTF-8' ?> 
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://xmlns.jcp.org/jsf/html" 
     xmlns:p="http://primefaces.org/ui" 
     xmlns:f="http://xmlns.jcp.org/jsf/core"> 
    <h:head> 
      <title>Facelet Title</title> 
</h:head> 
<h:body> 
    <h:form id="form"> 
    <p:growl id="msgs" showDetail="true"/> 
    <p:dataTable id="dt" value="#{course.allcourses}" var="course" editable="true"> 
     <p:ajax event="rowEdit" listener="#{course.onRowEdit}" update=":form:msgs" /> 
     <p:ajax event="rowEditCancel" listener="#{course.onRowCancel}" update=":form:msgs" /> 

    <p:column id="colId" filterBy="#{course.course_Id}" sortBy="#{course.course_Id}" 
                headerText="ID" footerText="contains" 

                filterMatchMode="contains"> 


              <h:outputText value="#{course.course_Id}" />      
             </p:column> 
    <p:column filterBy="#{course.course_Name}" headerText="Name" sortBy="#{course.course_Name}"> 

              <p:cellEditor > 
              <f:facet name="output"> 
              <h:outputText value="#{course.course_Name}" /> 
               </f:facet> 
               <f:facet name="input"> 
          <p:inputText value="#{course.course_Name}" style="width:100%"/> 
               </f:facet> 
              </p:cellEditor> 
             </p:column> 
<p:column filterBy="#{course.course_Hours}" headerText="Hours" sortBy="#{course.course_Hours}"> 
             <p:cellEditor > 
              <f:facet name="output"> 
             <h:outputText value="#{course.course_Hours}" /> 
               </f:facet> 
               <f:facet name="input"> 
         <p:inputText value="#{course.course_Hours}" style="width:100%"/> 
               </f:facet> 
              </p:cellEditor> 
             </p:column> 
    <p:column filterBy="#{course.course_Prise}" headerText="Prise" sortBy="#{course.course_Prise}"> 
            <p:cellEditor > 
             <f:facet name="output"> 
           <h:outputText value="#{course.course_Prise}" /> 
               </f:facet> 
               <f:facet name="input"> 
         <p:inputText value="#{course.course_Prise}" style="width:100%"/> 
               </f:facet> 
              </p:cellEditor> 
             </p:column> 
      <p:column filterBy="#{course.course_Date}" headerText="Start Date" sortBy="# {course.course_Date}"> 
              <p:cellEditor > 
               <f:facet name="output"> 
               <h:outputText value="#{course.course_Date}" /> 
               </f:facet> 
               <f:facet name="input"> 
            <p:inputText value="#{course.sd}" style="width:100%"/> 
               </f:facet> 
              </p:cellEditor> 


             </p:column> 
     <p:column style="width:32px"> 
     <p:rowEditor /> 

     </p:column> 


    </p:dataTable> 
    </h:form> 
</h:body> 

当我修改细胞和我点击更新按钮, 然后将细胞恢复到原来的状态

我该如何修改和更新行?

非常感谢你

注意 当我使用这个代码c.setCourse_Name("Hibernate");例如更新工作以及

这是我在课程法比恩

`public List <course> getAllcourses(){ 

    List<course> courses ; 
    courseDAO dao2 = new courseDAO(); 
    courses = dao2.getCourses(); 
    return courses; 

    } 
    ` 

,这是getCourses Mathod in course DAo Class

`public List<course> getCourses(){ 

    List<course> allcourses = null ; 
     Transaction trns = null; 
    Session session =HibernateUtil.getSessionFactory().openSession(); 
     try { 
     trns= session.beginTransaction(); 
     allcourses = session.createCriteria(course.class).list(); 
     session.getTransaction().commit(); 

     } catch (HibernateException e) { 
      e.getMessage(); 
      trns.rollback(); 
      } finally { 
     session.flush(); 
     session.close(); 
    } 
    return allcourses; 
    } 

` **你看到任何错误在我的代码**

回答

1

你的逻辑被关在这里......你从事件得到你的课程对象:

course c =((course) event.getObject()); 

其持有更新数据表中的值,然后通过调用setter来替换旧值。

删除了这一切,它应该工作:

c.setCourse_Id(getCourse_Id()); 
c.setCourse_Name(getCourse_Name()); 
c.setCourse_Hours(getCourse_Hours()); 
c.setCourse_Prise(getCourse_Prise()); 
c.setCourse_Date(getCourse_Date()); 
+0

亲爱的埃米尔Kaminski我做你提到的,但仍然单元格返回到原来的状态,你看到我的代码中的错误?这个问题迫使我疯狂 – 2014-11-06 15:13:42

+0

**任何帮助请** – 2014-11-07 00:53:24

+0

嗯..我想你需要调试你的问题多一点。请检查: 您的二传手是否被呼叫? 您的课程c =((course)event.getObject())obejct是否在session.update(c)调用之前保存更新的值? 你的私人领域是否有正确的价值观? 你的#{course.allcourses}是什么?“这个方法是否包含任何将值重置为原始状态的逻辑? – 2014-11-07 07:13:36

0

我一直在寻找这个问题的解决方案,但我没有找到我解决了它象下面这样:

//managed bean 

    public List<Operacao> operacoes; 

     @PostConstruct 
     public void init(){ 
      this.operacoes = operacaoService.operacoes(); 
     } 

     public List<Operacao> getOperacoes() { 
      return operacoes;   
     } 

    //xhtml 

<p:dataTable id="cars1" var="car" value="#{tabelaTrades.operacoes}" editable="true" > 

我是这样做,值= “#{tabelaTrades。operacoes()}” 和它的一些变化后没有及时更新数据表

http://www.mastertheboss.com/jboss-web/primefaces/datatables-with-primefaces?showall=&start=1