Spring MVC反射——调用Pojo setter



我有一个控制器,它应该更新数据库中的任何对象,我如何才能使对象的setter是基于该对象的属性键调用?我听说反思可能是我祈祷的答案,是这样吗?如果是这样,实现我所寻找的最优雅的方式是什么?

    Object entity = repository.findOne(id);
    for (Object key : request.getParameterMap().keySet()) {
        //invoke setter-method of entity
        //for example, if key == "name" , i want entity.setName() to be called
    }
    repository.save(entity)

我正在运行Spring MVC。如果需要更多的信息,请让我知道!

UPDATE,工作代码:

Object entity = repository.findOne(id);
BeanWrapper beanWrapper = new BeanWrapperImpl(entity);
    for (Object key : request.getParameterMap().keySet()) {
            beanWrapper.setPropertyValue(key.toString(), request.getParameterMap().get(key));
    }
    repository.save(entity);

也许使用Spring MVC用来实现@ModelAttribute等相同的数据绑定工具会更好。

new WebDataBinder(entity).bind(new ServletRequestParameterPropertyValues(request));

注意,这种方法强制使用特定格式的参数名,如5.4 Bean操作和BeanWrapper中所述。

相关内容

  • 没有找到相关文章

最新更新