锁定老帖子 主题:关于webwork字段值自动邦定的困惑
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2004-07-23
使用ModelDriven,同时给Model User增加一个copy(User user)方法,用于
将编辑时更新的数据传递给LOad出来的对象,再进行保存。由于ModelDriven风格是将对象放在stack中,所以同一用户可同时进行多个用户的修改。 public class EditUserAction implements Action, ModelDriven { private User user = new User();; public Object getModel(); { return this.user; } public String execute(); throws Exception { User u = userService.getUserByID(user.id);; user.copy(u);; //将需更新的fields更新到load出来的User上 userService.save(u);; return SUCCESS; } } |
|
返回顶楼 | |
发表时间:2005-09-06
不知道是帖子老了还是我搞错了,如果不设置<interceptor-ref name="params"/>确实有你们这些问题,但是设置了之后,在action调用execute()的时候 userId 肯定有值了,怎么会还未被ParameterInterceptor邦定到action的userId字段中???
另外为什么单独搞一个userId, user.id不能用么? |
|
返回顶楼 | |
发表时间:2005-09-07
帖子老了还是很有价值,Quake Wang的方法我觉得是最有效率而且简洁的,还可以再写的通用些,而且这样做就是要废弃copy property,再copy就是多此一举了,楼上的理解错了。
public Object getPersistentModel(String idStr); { String[] idStrArray = (String[]);(ActionContext.getContext();.getParameters();.get(idStr););; EntityObject entityObject = null; if (idStrArray != null); { long id = 0; try { id = Long.parseLong(idStrArray[0]);; } catch (Exception e); { logger.warn("parse id error, not be long value");; } if (id > 0); { entityObject = ....... } } return entityObject; } |
|
返回顶楼 | |
发表时间:2005-09-07
加了parametersIntecepter后,不管你getUser()怎么变都是返回 页面的那个user.(在executer()里面调用getUser(),不是别的地方)
如果要更新整个user的所有字段,我觉得还是把id一起放在页面中,execute()中直接update(user);如果是更新其中几个字段,先在execute()里面load user,然后copy property,再update. 不知道这种做法会有什么问题? 为什么大家都要去改动getUser()方法? |
|
返回顶楼 | |