黑马程序员技术交流社区

标题: beanUtils测试问题 [打印本页]

作者: youc3576    时间: 2011-9-29 22:39
标题: beanUtils测试问题
package com.youc.beanutils;

import java.beans.Beans;
import java.lang.reflect.InvocationTargetException;

import org.apache.commons.beanutils.BeanUtils;
import org.junit.Test;

public class Demo01 {
        @Test
        public void test1() throws IllegalAccessException,
                        InvocationTargetException {
                Person p = new Person();
                BeanUtils.setProperty(p, "name", "x***");
                System.out.println(p.getName());
        }

        @Test
        public void test2() throws IllegalAccessException,
                        InvocationTargetException {
                String name = "aaa";
                String age = "23";
                String password = "124";

                Person p = new Person();
                BeanUtils.setProperty(p, "name", "name");
                BeanUtils.setProperty(p, "age", "age");
                BeanUtils.setProperty(p, "password", "password");
               
                System.out.println("姓名:"+p.getName());
                System.out.println("年龄:"+p.getAge());
                System.out.println("密码:"+p.getPassword());
        }
}

各位老鸟:
    请问为什么我的用beanUnintls操作我的Person类的属性时出现不能把String类型数据转换成int类型的,看了方老师的教程发现我写的没错啊可运行后的结果是这样的
    姓名:name
   年龄:0
   密码:password
其中javabean类(person类)如下:
package com.youc.beanutils;

/**
*
* 使用beanUtils操作javabean的属性(第三方jar包)
* @author zs
*
*/

public class Person {// javabean

        private String name; // 字段
        private String password; // 字段
        private int age; // 字段
       
        public String getAb(){
                return null;
        }
       
        public String getName() {
                return name;
        }

        public void setName(String name) {
                this.name = name;
        }

        public String getPassword() {
                return password;
        }

        public void setPassword(String password) {
                this.password = password;
        }

        public int getAge() {
                return age;
        }

        public void setAge(int age) {
                this.age = age;
        }

}
作者: 匿名    时间: 2011-9-30 09:30
在张老师的视频中使用BeanUtils工具包操作JavaBean:
1、build path引入beannutils包和logging包
2、使用方法
System.out.println(BeanUtils.getProperty(pt1, "x").getClass().getName());
//输出java.lang.String
BeanUtils.setProperty(pt1, "x", "9");
System.out.println(pt1.getX());
//输出9
***********************************
你的代码应该改成
BeanUtils.setProperty(p, "name", name);
BeanUtils.setProperty(p, "age", age);
BeanUtils.setProperty(p, "password", password);
是不是笔误啊,你定义的字符串变量,不要加“”
作者: ila123    时间: 2011-9-30 11:38
public class PersonAction {

        /**
         * @param args
         * @throws InvocationTargetException
         * @throws IllegalAccessException
         */
        public static void main(String[] args) throws IllegalAccessException, InvocationTargetException {
                String x="zhangsan";
                String y="123456";
                String z ="15";
                Person p =new Person();
                BeanUtils.setProperty(p, "name", x);
                BeanUtils.setProperty(p, "password", y);
                BeanUtils.setProperty(p, "age", z);
                System.out.println(p.getName());
                System.out.println(p.getPassword());
                System.out.println(p.getAge());
               

        }

}
首先得明白他的参数:
BeanUtils.setProperty(Object bean, String name,Object value);
bean:即javabean,就是你的Person实例,
name:就是成员变量,即你的name,passwod,age,记得这是一个String
value:就是成员变量的值。
当然你要这样写也可以,但你得类型匹配:
BeanUtils.setProperty(p, "name", "lisi");
BeanUtils.setProperty(p, "password", "passwd");
BeanUtils.setProperty(p, "age", "100");
你那样写当然age是0了
————————————————————————————————————
这个没什么特殊的,还有一个特殊的以后用到的RequestUtils.populate(Object bean, request);
这个得注意:
1、你post提交上来的属性名必须和你的成员变量名相同,
2、只能做简单类型的处理,如Biginteger,BigDecimal
以后用到再说吧。
[ 本帖最后由 ila123 于 2011-09-30  11:41 编辑 ]
作者: 匿名    时间: 2011-9-30 13:57
标题: 回复 沙发 的帖子
嗯嗯 我也发现了。。。谢谢Person p = new Person();
                BeanUtils.setProperty(p, "name", name);
                // 只支持8中基本数据类型的自动转换,这里自动转换了age的类型
                BeanUtils.setProperty(p, "age", age);
                BeanUtils.setProperty(p, "password", password);
                BeanUtils.setProperty(p, "brithday", brithday);
                发现是上面那样才对
作者: 匿名    时间: 2011-9-30 23:29
标题: 回复 藤椅 的帖子
呵呵知错了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2