2017-09-13 22 views
0

私はモデルエンティティPlaceを持っているので、いくつかのリレーションを初期化しておく必要があります。次のように は、今私は、コントローラで自動作成モデルフォームバッキングBeanを使用しています: 注入されたフォームバッキングモデルBeanを初期化する方法は?

@GetMapping(value = "/add") 
public String addPlacePage(final Place place, Model model) { 
    model.addAttribute("services", serviceRepository.findAll()) 
      .addAttribute("categories", categoryRepository.findAll()) 
      .addAttribute("cities", cityRepository.findAll()); 
    return "admin/place/addPlace"; 
} 

Place place

は(おそらく春MVC)私の春に作成されます。 Beanをバッキングするためのファクトリメソッドを提供する方法はありますか?私はコントローラーでこれをしないことを望みます。

私はこのように私の構成では工場出荷時のコードを入れて試してみました:

@Bean 
@Scope(value = "prototype") 
public Place place() { 
    log.info("Creating place in FACTORY"); 
    Place place = EntityFactory.emptyPlace(); 
    return place; 
} 

が、これは動作しません。

答えて

0

私はfreenodeの#springチャンネルで同じ質問をしており、これはユーザーのおかげで来たものです< @_ollie>。私がやりたいために、@ModelAttribute方法は、このようなコントローラで定義する必要があります。

@ModelAttribute 
private Place emptyPlace(){ 
    log.info("Creating place in FACTORY"); 
    Place place = EntityFactory.emptyPlace(); 
    return place; 
} 

および関連ドキュメントはここ https://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc-ann-modelattrib-methods

です
関連する問題