日期:2014-05-17  浏览次数:21341 次

本人初学Java,问一个小问题。
自己写一个小列子,有一个问题。我用的struts2,在action里面定义了一个对象:
private BDaWjxx dawjxxModel;

public BDaWjxx getDawjxxModel() {
return dawjxxModel;
}

public void setDawjxxModel(BDaWjxx dawjxxModel) {
this.dawjxxModel = dawjxxModel;
}

在页面上面使用使用${dawjxxModel.属性的方式}绑定数据,然后保存的时候直接在action的方法里面直接使用dawjxxModel。但是存在一个问题,更新某个dawjxxModel的时候,如果我在页面上面没有放置某个属性值的绑定,那我 在action方法里面就取不到指定属性的值。如果某个对象属性太多了,而在页面上面只更新特定的几个属性而已。要怎么处理,大家平常是怎么做的?
------解决方案--------------------
这只是后台对应前台数据的一种方式,struts是通过一个Method拦截器实现的,类似于以前java web的request.getParamter的作用。关于你问的问题:
.更新某个dawjxxModel的时候,如果我在页面上面没有放置某个属性值的绑定,那我 在action方法里面就取不到指定属性的值。
没错,是这样的,Action中的对象会自动对应你提交的属性,比如对象有5个属性,你只用修改3个,那你提交3个就OK了,其他的在后台接收到的会是一个null值。你可以把它理解成一个“容器对象”,你哪个属性有值你自己肯定是清楚的,这个对象只是负责去装你前台传过来的修改数据。一般更新是先通过id  load出原对象(更新的时候id无论如何都要传过来,比如通过隐藏域),然后你写这样的代码:bean.setXxx(bean1.get(xxx));  bean1就是你前台传的不完整对象,你直接取你前台填的属性就OK了,明白了吧。