在本篇文章中,我们继续讲修改操作。
第一步,我们需要在update.jsp页面中再添加一个input,让其处于隐藏状态:
代码如下:
<input type="hidden" value="${personUpdate.imgurl }" name="personDto.imgurl" />
第二步,我们在PersonDao接口中添加如下方法:
代码如下:
//修改
public void update(Person person);
第三步,我们需要在PersonDaoImpl类中实现该方法:
//修改,当对象处于游离状态时,这时才需要对它进行更新
@Override
public void update(Person person) {
// 建议使用merge()方法,和JTA规范保持一致,把对游离状态对象的更新同步到数据库
sessionFactory.getCurrentSession().merge(person);
}
第四步,在PersonService接口中添加如下方法:
代码如下:
//修改
public void update(Person person);
第五步,我们需要在PersonServiceImpl类中实现该方法:
//修改
@Override
public void update(Person person) {
personDao.update(person);
}
第六步,在PersonAction中实现修改操作:
//修改
public String update() {
person.setId(personDto.getId());
person.setName(personDto.getName());
person.setImgurl(personDto.getImgurl());
try {
personService.update(person);
} catch (Exception e) {
return "updateError";
}
return SUCCESS;
}
第七步,在PersonDto中再添加两个属性,并实现其get/set方法:
//id
private Integer id;
//图片文件路径
private String imgurl;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getImgurl() {
return imgurl;
}
public void setImgurl(String imgurl) {
this.imgurl = imgurl;
}
第八步,我们还需要在struts.xml中配置一个result:
代码如下:
<result name="updateError">/update.jsp</result>
第九步,测试:
把名字从李斯换成王五: