Estoy tratando de publicar un modelo que contiene un mapa en mi controlador, lo he intentado de dos maneras:
Primero, solo estoy usando una etiqueta normal, llega a mi controlador con la tecla de cadena correcta, pero el objeto del mapa se vuelve nulo
<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>También traté de pasar el Mapa usando la etiqueta de formulario, como se muestra en la línea a continuación:
pero no llega a mi controlador, estoy pasando este formulario a una función 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; }); });este es el controlador que está esperando el modelo:
@RequestMapping(value="/saveConfig",method = RequestMethod.POST) public ModelAndView currentquote(@ModelAttribute("productQuote") ProductQuoteDTO productQuote) { .. }por favor, hágame saber dónde estoy haciendo mal. ¡Gracias!
Debe usar formularios JSP en lugar de formularios HTML sin procesar, hará su vida mucho más simple.
Supongo que productQuote.prodconTm es tu mapa:
<%@ 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> No estoy seguro de si prodconTm['${entry.key}'].qty en la ruta.
De lo contrario, es posible que deba adaptar el DTO de su valor de mapa a una cadena simple o una primitiva