例如: 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多个属性动态赋值。
下面是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)); } }
如果我没有理解错你的问题的话,上面的额代码可以满足你的需求,如果有问题请联系我。
@平睦: 谢谢了,已解决!
这个很显然得利用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;
}