锁定老帖子 主题:使用BeanUtils来进行对象的组装
精华帖 (0) :: 良好帖 (1) :: 新手帖 (13) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-10-20
commons-beanutils组件是Jakarta Commons项目组中的一个,可以到Jakarta官网上去下载。我们今天讨论的主要就是commons-beanutils中的BeanUtils这个类,这个类都是静态方法,可以很方便的操纵各个JavaBean对象,包括获取属性、设置属性等,我们以例子来进行说明。 假设有如下一个JavaBean对象: public TestBean private int intValue; public void setStringValue(String value) public void setIntValue(int value) public int getIntValue() 那么我们就可以使用BeanUtils来对其进行设置值和获取值了。如下: TestBean tb = new TestBean(); 通过上述的语句我们就可以给新new的对象设置两个属性了,注意其中第一个参数就是我们的属性名称,这里也是我们在使用这个工具的时候最需要注意的地方。这个属性名称就是我们的TestBean中的getXXX方法中的XXX,比如getStringValue中其属性名称就是stringValue,在使用属性名称的时候,除了XXX中的第一个字母不需要大小写之外,其他的部分是需要严格区分大小写的,这也是JavaBean的规范。这里有一点需要特别注意的就是,如果属性名称中第一个单词(我们界定的)只有一个字母的话,那么其属性名称必须大写!我们可以看这样一个例子: 我们给TestBean加如下一个属性: …… public void getTName() 那么在使用BeanUtils进行属性赋值的时候,如果你这样写: BeanUtils.setProperty(tb, "tName", "hello"); 那么就会被抛出一个异常,表示这个属性找不到,因为按照JavaBean的规范,属性名称中如果有多个单词,则每一个单词的首字母要大写!这里BeanUtils就会认为属性TName是两个单词,分别是T和Name,所以取属性的时候第一个字母必须要大写,所以其属性就应该是;TName,那么我们就应该如下写操作语句: BeanUtils.setProperty(tb, "TName", "hello"); 这样写才是正确的。那么我们来看在B/S结构的程序中,如何将表单域的参数(不一定是表单域,是参数都可以)转换成一个JavaBean对象,我们以上面的Bean为例子,我们在页面上进行编写如下: …… 然后我们在服务器端进行编写如下代码来获取参数,并组装成一个TestBean对象,代码如下: …… 我们注意到,在表单区域中编写的几个输入框的名称(红色标识的部分)就是我们的TestBean对象的属性名称,然后服务器端的代码中,我们首先使用request.getParameterMap()来获取提交的参数,并转换成一个map对象存储(键是参数名称,值是提交的值),然后我们使用BeanUtils的populate方法来进行赋值。通过打印后,我们可以看到我们输入的值被成功的设置到对象中去了,可以看到简单的两行代码就可以搞定参数到对象的数据绑定工作,如果一个对象有十几个甚至几十个参数属性的话,那么这样的方式将是非常简便的,至少可以少写十几行甚至几十行的代码。 可以看到利用BeanUtils这个工具类可以很方便的进行JavaBean的属性操作和request的参数到JavaBean的属性绑定操作。其他的功能大家就可以参看它的API文档了~~~~ 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-10-21
比喜欢这样的操作模式,好慢
|
|
返回顶楼 | |
发表时间:2010-10-21
还不错,回头研究研究BeanUtils去!
|
|
返回顶楼 | |
发表时间:2010-10-22
太好了,这个效率高好多,我有空也要把这个项目好好看看
|
|
返回顶楼 | |
发表时间:2010-10-22
据我所知:Struts1.x也是用了这个包 将Session/Request 里面的键值对 放入ActionForm的
|
|
返回顶楼 | |
发表时间:2010-10-22
对于单表的操作,这样的确很方便!
但涉及到多张表,字段也比较多,并且里面有几个相同的字段,这样的写法很难维护。 曾经有一段代码,开发人员走了,后面的人就不知道这里的取值到底是有哪些值,分别从哪个地方传来的。 |
|
返回顶楼 | |
发表时间:2010-10-22
记得以前从前从页面拿到form都是String的,要转换类型插到数据库一般都用BeanUtils.copyProperties(x,x)来转换下,,struts1里面有经常用
|
|
返回顶楼 | |
浏览 4675 次