2017-04-07 22 views
1

我想發佈一個包含映射到我的控制器模型,我已經嘗試了兩種方式:郵政地圖<字符串,對象>春控制器使用Ajax

首先,我只是用一般的tag,它達到我用正確的字符串鍵控制,但地圖的對象被作爲空

<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 fu nction:

$(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) { 
    .. 
    } 

請讓我知道我做錯了。謝謝!

+0

代碼片段中的地圖在哪裏? –

+0

我想你應該在ajax調用之前加上'event.preventDefault();' –

回答

0

你應該使用JSP Forms而不是原始的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修改爲簡單的字符串或原語

+1

這樣做,謝謝! – User1v0

相關問題