我正在尝试使用model属性填充对象。它将null
从JSP返回到控制器。
<form:form method="post" action="addProduct" modelAttribute="product">
<table>
<tr>
<td>Product Name :</td>
<td><form:input path="productName"/></td>
</tr>
<tr>
<td>Parent Product Id:</td>
<td><form:input path="parentId"/></td>
</tr>
<tr>
<td>Category Id:</td>
<td><form:input path="categoryId"/></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="AddProduct"></td>
</tr>
</table>
</form:form>
@Autowired
private ProductService productService;
@RequestMapping(value = "addProduct", method = RequestMethod.GET)
public ModelAndView productForm(@ModelAttribute("product") Product product){
return new ModelAndView("addProduct"));
}
@RequestMapping(value = "addProduct", method = RequestMethod.POST)
public ModelAndView insertProduct(@ModelAttribute("product") Product product){
System.out.println(product.getProductName() + " : " + product.getParentId() + " : " + product.getCategoryId());
productService.insert(product);
return new ModelAndView("success");
}
在使用modelAttribute
将控制值返回控制器时,它将以null
的形式出现。我做错了什么?
另外还有一件事我在Catergory class
做了同样的事情,这完全没问题。
无法理解这里的错误。
答案 0 :(得分:2)
最后我找到了解决问题的方法。
在我的pojo课程中,我为setter提供了不同的名称,因为它无法运行。
例: 在我的JSP中,我正在给予
<form:input path="productName"/>
我的路径名称是&#34; productName&#34;在我的POJO类中,我为变量指定了相同的名称,但我的setter名称不同。
因此,为了设置属性值,Spring将查找名为set + attributeName()
的setter。
在上述情况中,set + productName()
我的错误是我的二传手名字为setName()
。
希望这有助于像我这样的春天的新手。 谢谢
答案 1 :(得分:1)
看起来您实际上并未向ModelAndView添加模型。
这会将新的Product对象传递给您的表单:
@RequestMapping(value = "addProduct", method = RequestMethod.GET)
public ModelAndView productForm(){
return new ModelAndView("addProduct", "product", new Product());
}