首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring注释@ModelAttribute

Spring注释@ModelAttribute
EN

Stack Overflow用户
提问于 2016-11-06 22:29:29
回答 1查看 343关注 0票数 4

我对Spring注释@ModelAttribute有一些疑问。在名为"addProduct“的第一个方法中,我创建模型模型,在调用model.addAttribute之后,我可以在jsp文件中使用"product”名称,例如product.getProductPrice。但是在名为“first”的第二个方法中,我添加了参数“@ModelAttribute(”产品“) Product ",但是为什么呢?如果我要删除这个注释,我的程序和以前一样工作,请解释)非常感谢你,对不起我的英语,我来自乌克兰)

代码语言:javascript
复制
@RequestMapping("/admin/productInventory/addProduct")
public String addProduct(Model model) {
    Product product = new Product();
    // add default for radio button!
    product.setProductCategory("Mobile Phone");
    product.setProductCondition("New");
    product.setProductStatus("active");

    model.addAttribute("product", product);

    return "addProduct";
}

@RequestMapping(value = "/admin/productInventory/addProduct", method = RequestMethod.POST)
public String addProduct(@ModelAttribute("product") Product product, HttpServletRequest request) {
    productDao.addProduct(product);

    MultipartFile productImage = product.getProductImage();
    String rootDirectory = request.getSession().getServletContext().getRealPath("/");
    System.out.println(rootDirectory);
    // product id as the file name
    // !!!! TODO
    // path = Paths.get(rootDirectory + "/WEB-INF/resources/image/" +
    // product.getProductId() + ".png");

    path = Paths.get("F:\\Spring\\eMusicStore\\src\\main\\webapp\\WEB-INF\\resources\\images\\"
            + product.getProductId() + ".png");

    if (productImage != null && !productImage.isEmpty()) {
        try {
            productImage.transferTo(new File(path.toString()));
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("Product image saving failed", e);
        }
    }
    return "redirect:/admin/productInventory";
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-07 05:54:53

目的@ModelAttribute是来自请求一个模型对象的绑定param/properties,比如您的方法中的@ModelAttribute("person") Person person,它将从对象的名称、年龄到个人绑定属性,并用它构造一个对象。它不会将任何内容传递给您的视图,它将在提交请求后完成作业。并没有被贯彻到行动的观点上。

相反,当您有Model model时,您将显式地构造一个对象,并将属性添加到它的属性中。它将被传递到您的视图中,不像@ModelAttribute上面所做的那样

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40455280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档