2016-10-28 5 views
1

私はSpring MVCフレームワークを初めて使っています。私はJavaで自分の知識を広げるために自習をしています。model.addAttribute()parameters

これは私が次のチュートリアルのgetProducts()コード定義を理解する方法ですが、私が間違っていれば修正してください。

コントローラデータアクセスオブジェクト> データアクセスオブジェクト>を一覧表示するgetProductList()方法>店舗情報を通じてデータベースまたはモデルからデータを取得から要求の何かが続いてバインドモデルに一覧表示します。

私はこれについて2つの質問を得ました。

公共String getProducts(Model model)におけるパラメータとしてmodelを含めることが依存性注入

考えられているが、私は好きなように変更することができますか、それは何かを一致させる必要がありmodel.addAttribute("products",products);名前だけで(引用符内)productsですか?

public class HomeController { 

    private ProductDao productDao = new ProductDao(); 

    @RequestMapping("/") 
    public String home(){ 
     return "home"; 
    } 

    @RequestMapping("/productList") 
    public String getProducts(Model model){ 
     List<Product> products = productDao.getProductList(); 
     model.addAttribute("products",products); 

     return "productList"; //productList string is the productList.jsp which is a view 
    } 

    @RequestMapping("/productList/viewProduct") 
    public String viewProduct(){ 
     return "viewProduct"; 
    } 
} 

私は何か説明やコメントを感謝します。

ありがとうございます。

+0

はいこれは、model.addAttribute( "products"、products)のjsp – Jens

+0

製品(引用符内)の値を取得するために使用される名前です。そのビューのサロゲートと一致する必要があります(例:jsp)。 List 製品と一致する必要はありません。 jspのサロゲートと一致する限り、好きなものに変更することができます。 –

答えて

1

はい、モデルはスプリングでインスタンス化され、メソッドに注入されます。つまり、モデル属性のいずれかが要求に一致する場合、そのモデルは埋められます。それは方法で

model.addAttribute("products",products); 

「製品」最後のparamである必要がありますが${products}

0

私のコードで値を取得し、あなたのビューでそれを使用することができます名前だけです。これはサンプルです。

@Autowired 
    private ProductService productService; 

    @RequestMapping(value = "/settings/product") 
    public ModelAndView showProduct(ModelAndView mav, HttpServletRequest req, Authentication auth) { 
     CustomUserDetail customUserDetail = (CustomUserDetail) auth.getPrincipal(); 

     int associationIdx = customUserDetail.getAccount().getAssociation().getIdx(); 

     String language = CookieUtil.getCookieValue(req, "lang"); 

     Association association = associationService.findAssociationByIdx(associationIdx); 

     List<AssociationProductColumnDefine> columns = associationService.findByAssociationAndLanguage(association, 
       language); 
     List<AssociationProductColumnDefine> source = associationService.findByAssociationAndLanguage(association, 
       "ko-kr"); 

     mav.addObject("association", association); 
     mav.addObject("source", source); 
     mav.addObject("columns", columns); 

     mav.setViewName("/association/association_settings_product"); 

     return mav; 
    } 
  1. はい、あなたの選択のモデルとのModelAndView。
  2. はい、簡単です。