【发布时间】:2011-08-23 02:00:19
【问题描述】:
我有一个具有 id、firstName、lastName 属性的 bean 类,该属性具有公共 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();
}
}
【问题讨论】:
-
你的 catch / finally 块看起来很奇怪。我希望这不是生产代码。知道您的 Web 应用程序在
System.exit(1)发生了什么会很有趣……服务器会退出吗? ;-) ..... 刚刚测试:是的,服务器宕机了。 -
这是一个 DB/JDBC 问题。请将 JSF 逻辑与数据访问逻辑分离。使用
main()方法创建一个独立的 Java 程序,您可以在其中执行纯 JDBC 任务并将其作为问题代码 sn-p 提供。