以前做的各种springMVC的管理系统,都是仿照公司cms的写代码方式:
在Controller下的方法一般都写成:
public ModelAndView toSave(HttpServletRequest request){ // do somthing here};
今天重新学习springMVC时又认识到了新的知识:
实体对象:Product.java和ProductForm.java
两个JSP页面:ProductForm.jsp和ProductDetails.jsp
一个controller:ProductController.java
ProductForm.jsp:
做的是输入的操作。其中Add Product 执行ProductController中的saveProduct方法:
@RequestMapping(value="/product_save")
public String saveProduct(ProductForm productForm,Model model){
logger.info("saveProduct called");
Product product=new Product();
product.setName(productForm.getName());
product.setDescription(productForm.getDescription());
product.setPrice(productForm.getPrice());
model.addAttribute("product", product);
return "ProductDetails";
}
ProductDetails.jsp的显示结果是:
为什么会出现这样的结果呢? 我何时给ProductForm.java里存值了呢?
然后看到方法中的参数有ProductForm ,猜测是不是他自动获取的?
于是将方法中的红色部分代码做个替换:
product.setName(productForm.getDescription());
product.setDescription(productForm.getName());
输入同样的内容 ,得到结果
同时发现,ProductForm.jsp页面中,每个输入框的name属性分别为name、description、price;
猜测在save方法中ProductForm productForm 获得的就是这个name属性下 输入的值。
实属个人猜测,请指正!