我的项目中有另一个问题我现在正在工作,我到处搜索找到一些解决办法,但无法得到......
我有一个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
答案 0 :(得分:1)
发布的代码很奇怪。您没有在持有所有已编辑员工的bean上调用action方法,而是调用bean上的action方法,该方法本身代表一个完全空白的员工实例,该实例不是员工中显示的员工之一。表
首先,替换
<h:commandButton value="update" action="#{employee.updateEmployee}" />
通过
<h:commandButton value="update" action="#{tableBean.updateEmployees}" />
它会变得更加直截了当。