【问题标题】:Spring MVC @ModelAttribute getting filled EntitySpring MVC @ModelAttribute 填充实体
【发布时间】:2012-12-04 15:28:57
【问题描述】:

今天我坚持使用带有 POST 方法的弹簧表单,它没有将发布的项目提供给我想要的控制器。这是我的代码。

Controller.java

@Controller
@RequestMapping("/cart")
public class CartController extends CommonController
{
    @RequestMapping(value = "/add", method = RequestMethod.POST)
    public ModelAndView addCart(@ModelAttribute("productList") Item item, BindingResult result,Model model){
         System.out.println(item.getId()); /// <-- doesn't gives me the ID
         return new ModelAndView("cart");
    }
 }

ProductList.jsp

/// Loop through the products of search itemlist and generates the forms with the correct items
<c:forEach var="item" items="${productList.items}" varStatus="status">
                    ${item.name}
        <div class="addCart">
        <c:url value="/cart/add.html" var="addURL" />
            <form:form method="POST" action="${addURL}" modelAttribute="productList">
                <form:hidden path="items[${status.index}].id"/>
                <input type="submit" class="addCartBtn" value="Add to cart" />
            </form:form>
        </div>

BackingBean.java

public class SearchForm implements Serializable
{
   private Collection<Item> items;
   private String term;
   // getters and setters
}

${productList} 是遍历所有项目的 backingbean。

我真的不知道问题是什么,为什么它没有给我通过 POST 传递的正确数据。 非常感谢。

【问题讨论】:

    标签: forms spring spring-mvc foreach modelattribute


    【解决方案1】:

    将你的 spring:hidden 标签转换为普通的 html 隐藏标签:

    <form:hidden path="items[${status.index}].id"/>
    

    <input type="hidden" name="id" value="${item.id}"/>
    

    【讨论】:

    • 已将其替换为您所说的内容,但仍无法通过 post 方法获取该项目。该项目仍然没有内容。
    • 它现在确实在 Item 中填写了 item id,但它并没有把所有的 item 数据都取出来。或者我只是误解了@ModelAttribute 的属性:(.
    • 对不起,我彻底失去了你!!
    • 我想要的是,如果我按下提交按钮,它将传递整个项目以及项目拥有的所有数据。但是在隐藏输入类型的情况下,您只传递了项目的 id,而不是项目的所有数据。
    • 哦,我的错,我误解了功能性的东西,但是:) 哈哈,你的回答是对的。非常感谢^^您的回答=D。我只需要在发布后使​​用转换器将数据解析到其中。谢谢谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    相关资源
    最近更新 更多