为了账号安全,请及时绑定邮箱和手机立即绑定

java中为实体对象的动态属性赋值

java中为实体对象的动态属性赋值

子衿沉夜 2018-07-22 07:08:23
例如: User 对象中有100个属性,从jsp页面传过来的参数对应了其中的某一个属性,根据User中的set方法为具体的属性赋值。怎么样根据set方法或者其他的方法为对应的不确定的属性赋值!  public class User{   private String field1;    private String field2;    private String field3;    private String field4;    private String field5;    private String field6;    private String field7;    private String field8;    private String field9;    private String field10;    private String field11;    private String field12;    private String field13;    private String field14;    private String field15;    private String field16;    private String field17;    private String field18;    private String field19;    private String field20;  ..//get、set方法省略  } String param = request.getParameter(" field ? "); 其中? 根据json返回的数据自动生成的文本框,获取到的属性名称,对应了User中的具体某个属性。比如:?为1,则获取到field1 的值,然后将其赋值给User。如何解决以上,为User多个属性动态赋值。
查看完整描述

3 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

下面是User类:

import java.lang.reflect.Field;import java.util.HashMap;import java.util.Map;public class User {    private Map<String, String> map = new HashMap<String, String>();    

    
    public boolean contains(String key) {
        Class<FieldString> fieldClass = User.FieldString.class;
        Field[] fields = fieldClass.getFields();        for (Field f : fields) {            if (key.equals(f.getName())) {                return true;
            }
        }        
        return false;
    }    
    public void putParam(String key, String value) {
        map.put(key, value);
    }    
    public String getParam(String key) {        return map.get(key);
    }    
    private class FieldString {        public String field1;        public String field2;        public String field3;        public String fiels4;
    }
    
}

进行测试:

public class Test {    public static void main(String[] args) {
        String key = "field1";
        String value = "hello";
        User user = new User();        
        if(user.contains(key)) {
            user.putParam(key, value);
        }
        
        System.out.println(user.getParam(key));
    }
}


查看完整回答
反对 回复 2018-07-23
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

这个很显然得利用Java反射来解决了。

setValue(Class beanClass,HttpServeltRequest request){

Object user=beanClass.newInstance();

Field[] fields=bean.getDeclaredFields();

for(int i=0; i<i.length; i++){

field.setValue(user,request.getParameter(fileds[i].getName));

}

return user;

}


查看完整回答
反对 回复 2018-07-23
  • 3 回答
  • 0 关注
  • 2391 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信