论坛首页 Java企业应用论坛

关于webwork字段值自动邦定的困惑

浏览 25729 次
该帖已经被评为精华帖
作者 正文
   发表时间: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;
  }
}
0 请登录后投票
   发表时间:2005-09-06  
不知道是帖子老了还是我搞错了,如果不设置<interceptor-ref name="params"/>确实有你们这些问题,但是设置了之后,在action调用execute()的时候 userId 肯定有值了,怎么会还未被ParameterInterceptor邦定到action的userId字段中???
另外为什么单独搞一个userId, user.id不能用么?
0 请登录后投票
   发表时间: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;
    }
0 请登录后投票
   发表时间:2005-09-07  
加了parametersIntecepter后,不管你getUser()怎么变都是返回 页面的那个user.(在executer()里面调用getUser(),不是别的地方)
如果要更新整个user的所有字段,我觉得还是把id一起放在页面中,execute()中直接update(user);如果是更新其中几个字段,先在execute()里面load user,然后copy property,再update.
不知道这种做法会有什么问题? 为什么大家都要去改动getUser()方法?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics