2011-11-15 4 views
1

私はデータベース内のオブジェクトを更新するはずのコントローラを持っていますが、そのオブジェクトのプロパティキーに基づいてオブジェクトセッターが呼び出されるようにするにはどうしたらいいですか? 私の祈りに対する反省が答えかもしれないと聞いたことがあります。もしそうなら、私が探しているものを達成する最もエレガントな方法は何ですか?Spring MVCリフレクション - Pojoセッターを呼び出す

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

答えて

1

おそらくそれは、Spring MVCのは@ModelAttributeを実装するために使用する施設を結合同じデータに良いだろう、など

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

(注)このアプローチこと5.4 Bean manipulation and the BeanWrapperに記載されているように、特定の形式のパラメータ名が課されます。

+0

あなたの答えをありがとう!私はBeanWrapperアプローチを使いました。 –

関連する問題