Spring MVC意外更新PO的问题

原来是Spring MVC处理POST请求过程中,(默认)还要回调一次formBackingObject来获取commond,然后填充数据,所以,如果formBackingObject返回了PO(Hibernate容器内对象),就会被修改,并波及到数据库。

 package org.powerstone.ca.web;
public class MyInfoFormController{
…………………………
…………………………
protected Object formBackingObject(HttpServletRequest request) throws
ServletException {
User user =userManager.findUser(caDelegater.getRemoteUser(request));
if (log.isDebugEnabled()) {
log.debug("entering 'formBackingObject' user[" + user+"]");
}
/**
* 如果直接返回userManager.findUser(),会出现意外情况:密码被修改
* 推测原因:因为返回的userManager.findUser()是容器(hibernate容器)内对象即PO,
* 所以spring进行数据绑定时会发生意外更新
*/
User result=new User();
result.setEmail(user.getEmail());
result.setMemo(user.getMemo());
result.setRealName(user.getRealName());
result.setSex(user.getSex());
result.setUserName(user.getUserName());
return result;
}

你可能感兴趣的:(Spring MVC意外更新PO的问题)