如何在spring mvc中将包含哈希映射的列表从jsp传递到控制器页面提交

时间:2013-06-18 09:09:55

标签: spring jsp spring-mvc

控制器中的列表大小为0。 JS文件只是提交表单,jsp文件正在迭代在页面加载时填充的hashMap列表,第三个是在jsp页面中单击提交按钮后接收列表的控制器。

JS file:

function getFormDetails(){
 document.forms[0].action=requestPath+"/admin/updateInterfaceParams.do";
 document.forms[0].submit();
}

JSP file:
<form:form method="post" cssStyle="float:left;">
<c:forEach var="list" items="${manageInterfaceList }" varStatus="stat">
   <c:forEach var="entry" items="${list}">
    <c:if test="${entry.key eq 'A'}">
    <input type="hidden" name="interfaceList[${stat.index}].key"
                        value="${entry.key}" />
    <span>Key:</span>
    <input type="text" id="keyAjax" name="interfaceList[${stat.index}].value" 
      value="${entry.value}"/>
    </c:if>
    <br />
    <c:if test="${entry.key eq 'B'}">
    <input type="hidden" name="interfaceList[${stat.index}].key"
      value="${entry.key}" />
    <span>Password:</span>
    <input type="text" id="password"
    name="interfaceList[${stat.index}].value" value="${entry.value }"/>
    <br />
    </c:if>
    </c:forEach>
    </c:forEach> 
    <span><input type="button"
            name="Submit" value="Submit" onclick="getFormDetails();"/></span>
    </form:form>
    Controller:

@RequestMapping(value = "/updateInterfaceParams.do")
            public ModelAndView updateInterfaceParams(HttpServletRequest request,
@ModelAttribute ArrayList<HashMap<String,String>> manageInterfaceList) {

                ModelMap modelMap = new ModelMap();
                try {
                    System.out.println(manageInterfaceList.size());
                } catch (Exception e) {

                    modelMap.addAttribute("errorMessage",e.getMessage());
                } 
                return new ModelAndView("manageinterface", modelMap);
            }

有关列表大小为何为0以及如何在控制器中获取列表元素的任何建议。

1 个答案:

答案 0 :(得分:0)

因为表单没有与表单支持对象相关联,所以需要指定表单元素的commandName属性 - 这将是包含列表的pojo。