【问题标题】:Post Map<String,Object> to Spring Controller using Ajax使用 Ajax 将 Map<String,Object> 发布到 Spring Controller
【发布时间】:2017-04-07 06:06:40
【问题描述】:

我正在尝试将包含地图的模型发布到我的控制器,我尝试了两种方法:

首先我只是使用常规标签,它通过正确的字符串键到达我的控制器,但地图的对象变为空

<c:forEach items="${productQuote.prodconTm}" var="productQuoteObjTM" varStatus="status">
<tr>
   <td>${productQuoteObjTM.key}</td>
   <td>
   <input value="${productQuoteObjTM.value.qty}" name="prodconTm['${productQuoteObjTM.key}']${productQuoteObjTM.value}" id="inputQuote${status.index}"/>

   </td>
   <td>${productQuoteObjTM.value.totalPrice}</td> 
  </tr>
  </c:forEach> 

我也尝试使用表单标签来传递地图,如下行所示:

但它没有到达我的控制器,我正在将此表单传递给 ajax 函数:

 $(document).ready(function() {
$('#quoteForm').submit(
    function(event) {
$.ajax({
    url : $("#quoteForm").attr("action"),
    data : $("#quoteForm").serialize(),
    type : "POST",
  success : function(response) {
    $("#prodConfig").html(response);
},
    error : function(xhr, status, error) {
    alert("ERROR:"+xhr.responseText);
}});
return false;
    });
});

这是期望模型的控制器:

    @RequestMapping(value="/saveConfig",method = RequestMethod.POST)
    public ModelAndView currentquote(@ModelAttribute("productQuote") ProductQuoteDTO productQuote) {
    ..
    }

请让我知道我哪里做错了。谢谢!

【问题讨论】:

  • 你的代码 sn-p 中的地图在哪里?
  • 我认为你应该在ajax调用之前添加event.preventDefault();

标签: ajax spring jsp spring-mvc hashmap


【解决方案1】:

你应该使用 JSP 表单而不是原始的 HTML 表单,它会让你的生活变得更简单。
我想productQuote.prodconTm 是你的地图:

<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>

<form:form id="quoteForm" commandName="productQuote">
    <c:forEach items="${productQuote.prodconTm}" var="entry">
        <tr>
            <td>${entry.key}</td>
            <td>
                <form:input path="prodconTm['${entry.key}'].qty" />
            </td>
            <td>${entry.value.totalPrice}</td> 
        </tr>
    </c:forEach>
</form:form>

我不确定路径中的prodconTm['${entry.key}'].qty 是否有效。
否则,您可能必须将 Map 值的 DTO 调整为简单的字符串或原语

【讨论】:

    猜你喜欢
    • 2018-09-22
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 2014-01-29
    • 1970-01-01
    • 2021-04-29
    相关资源
    最近更新 更多