model.addAttribute()参数

时间:2016-10-28 11:16:24

标签: java spring spring-mvc

我是Spring MVC框架的新手。我正在做一些自学,以扩展我的Java知识。

我从以下教程中了解getProducts()代码定义,但如果我错了,请纠正我。

控制器数据访问对象 >请求内容 数据访问对象通过getProductList()方法从{strong>数据库或模型获取数据>将信息存储到list >然后将列表绑定到模型。

所以我对此有两个问题。

公共model中包含String getProducts(Model model)参数是否考虑了依赖注入

products中的model.addAttribute("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";
    }
}

我很感激任何解释或评论。

谢谢。

2 个答案:

答案 0 :(得分:3)

是, 模型由spring实例化并注入到您的方法中,意味着如果任何模型属性匹配请求中的任何内容,它将被填充。它应该是方法中的最后一个参数

model.addAttribute("products",products);

&#34;产品&#34;只是一个名称,您可以在视图中使用它来获取${products}

的值

答案 1 :(得分: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. 是的,很简单。