私はSpring MVCの注釈@ModelAttributeについていくつか質問があります。 "addProduct"という名前の最初のメソッドでは、モデルモデルを作成し、呼び出し後にmodel.addAttributeを使用します.jspファイルでproduct.getProductPriceなどの「product」名前を使用できます。 しかし、最初と同じ名前の2番目のメソッドでは、パラメータ "@ModelAttribute(" product ")Product product"を追加しましたが、なぜですか? Spring MVCの注釈@ModelAttribute
@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";
}
あなたが何を求めているのかは不明です。最初のケースでは、コントローラーの中に 'Product'を作成し、それをモデルに入れます。 2番目のケースでは、リクエストの内容から 'Product'情報を取得しています。 (そして、天国のために、そのような狂気のようなファイル操作をハードコーディングしないでください!もしあなたが*そんなものを持っているなら、それを指定するために '@ Value'を持つプロパティを使用してください)。 – chrylis
それと同じではありません。検証の使用を開始するか、@ 'と組み合わせる場合は特にSessionAttributes'あなたは奇妙な行動が表示されます。 –