无法在jsf中编辑数据库表

时间:2012-10-18 21:05:03

标签: mysql jsf jsf-2 javabeans

我的项目中有另一个问题我现在正在工作,我到处搜索找到一些解决办法,但无法得到......

我有一个bean类,其id,firstName,lastName属性具有公共getter和setter,以及updateEmployee方法。

我正在使用以下jsf页面来获取数据库表值。

当我点击更新按钮时,会显示成功页面,但数据库中的值不会更改。任何人都可以告诉我为什么vales没有在数据库中进行更改的原因?

JSF页面:

<h:dataTable value="#{tableBean.employeeList}" var="employee" border="1">  
   <h:column>  
          <f:facet name="header">First name</f:facet>  
          <h:inputText value="#{employee.firstName}" />  
   </h:column>  

   <h:column>  
          <f:facet name="header">Last name</f:facet>  
          <h:inputText value="#{employee.lastName}" />  
   </h:column>  
</h:dataTable>  
<h:commandButton value = "update" action="#{employee.updateEmployee}"/> 

Employee.java:

public String updateEmployee(){  
   String query = "update employee set firstName = ?,lastName = ? where id = 1";           
   pstmt = conn.prepareStatement(query);  
   pstmt.setString(2,this.firstName);  
   pstmt.setString(3,this.lastName);   
   pstmt.executeUpdate(); // execute update statement  
   conn.commit();  
   committed = true;  
   return "success.xhtml";  
   }catch (Exception e) {  
       e.printStackTrace();  
       return null;  
   } finally {  
      try{  
         if (!committed) conn.rollback();  
              pstmt.close();  
          conn.close();  
       }catch(Exception e){  
            e.printStackTrace();  
      }  
    }  
 } 

谢谢, RAAM

1 个答案:

答案 0 :(得分:1)

发布的代码很奇怪。您没有在持有所有已编辑员工的bean上调用action方法,而是调用bean上的action方法,该方法本身代表一个完全空白的员工实例,该实例不是员工中显示的员工之一。表

首先,替换

<h:commandButton value="update" action="#{employee.updateEmployee}" /> 

通过

<h:commandButton value="update" action="#{tableBean.updateEmployees}" /> 

它会变得更加直截了当。