2011-05-11 51 views
2

我有一個具有公共getter和setter的id,firstName,lastName屬性的bean類以及一個updateEmployee方法。如何在JSF中編輯數據庫表

我使用以下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(); 
     } 
    } 
+1

你捕捉/ finally塊長相很奇怪。我希望這不是生產代碼。使用你的web應用程序知道'System.exit(1)'發生了什麼會很有趣......服務器會退出嗎? ;-) .....剛剛測試:是的,服務器停機。 – 2011-05-11 10:42:32

+0

這是一個DB/JDBC問題。請從數據訪問邏輯中解耦JSF邏輯。使用'main()'方法創建一個獨立的Java程序,您可以在其中執行純JDBC任務,並將其作爲問題代碼片段提供。 – BalusC 2011-05-11 12:23:39

回答

1

,如果你有你的支持bean相應的屬性你的價值觀會自動綁定。

您必須提交數據才能更新bean值。在窗體中添加一個命令或commandLink這樣的:

<h:form> 
<h:dataTable> ... </h:dataTable> 
<h:commandButton value="Submit" action="tableBean.actionMethod"> 
</h:form> 
+0

@Handy:謝謝你的回覆,我編輯了這個問題,請再次檢查。 – Adnan 2011-05-11 10:20:33

+1

我強烈建議開始使用調試器。在'updateEmployee'方法的第一行設置一個斷點並逐步進行。在每一步之後檢查所有變量的狀態。您的代碼中有一些可疑部分,例如您的表單包含一個輸入字段ID,您的查詢將id設置爲「1」。 – 2011-05-11 10:31:10

1

您在查詢只有兩個參數佔位符,但你指的第二和第三參數後:

pstmt.setString(2,this.firstName); 
pstmt.setString(3,this.lastName); 
相關問題