Spring MVC没有填充模型属性

时间:2014-09-26 18:27:32

标签: java spring spring-mvc

我正在尝试使用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做了同样的事情,这完全没问题。

无法理解这里的错误。

2 个答案:

答案 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());
}