前台传过来三个参数,id,name,value,
id为记录的主键,name为字段名称如(username),value为修改的值
程序片段如下:
............
                User entity =  new  User();
entity = userManager.get(id);  //第二行代码
System.out.println(entity.getPass());
try
{
Field f = entity.getClass().getDeclaredField(name);
    System.out.println("Field found: " + f.toString());
f.setAccessible(true);  
f.set(entity, value); 
}
catch(Exception e)
{
e.printStackTrace();
}

userManager.save(entity);当有第二行代码时,会报getDeclaredField .NoSuchFieldException,如果注释掉则没有问题,,求高手指点

解决方案 »

  1.   

    楼主提供的信息很难判断啊,你确定是那行代码?最好贴出get方法来看看
      

  2.   

    看下userManager.get(id)返回的数据,也许是个泛型,不一定是user。
    你用getFiled试一下呢,这个方法是可以包含父类里的字段的。
      

  3.   

    ............
      User entity = new User();
    entity = userManager.get(id); //第二行代码
    System.out.println(entity.getPass());
    try
    {
    Field f = User.getClass().getDeclaredField(name);
    System.out.println("Field found: " + f.toString());
    f.setAccessible(true);   
    f.set(entity, value);  
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    System.out.println(entity.getUsername());
    userManager.save(entity);
    如果红字部分改成如上代码,则通过,
    但是加上绿色部分代码,(加入前台的name参数值为‘username'),控制台输出的值没有发生变化,还是原来的值,为什么呢?
      

  4.   

    entity = userManager.get(id);返回的entity不是User的实例!