例如: 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)); } }

慕尼黑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;
}
- 3 回答
- 0 关注
- 2465 浏览
添加回答
举报
0/150
提交
取消