Spring MVC Reflection - 调用Pojo setter

时间:2011-11-15 15:04:06

标签: spring reflection spring-mvc

我有一个控制器应该更新数据库中的任何对象,我该怎样才能根据该对象的属性键调用对象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。如果需要更多信息,请告诉我们!

更新,工作代码:

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);

1 个答案:

答案 0 :(得分:1)

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

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

请注意,此方法强制使用特定格式的参数名称,如5.4 Bean manipulation and the BeanWrapper中所述。