Java Spring MVC视图呈现和绑定ArrayList<;客户模型>;使用表单提交返回控制器
我在提交表单时将ArrayList发回控制器时遇到问题。我可以通过以下方式获得我的价值观:Java Spring MVC视图呈现和绑定ArrayList<;客户模型>;使用表单提交返回控制器,java,spring-mvc,jsp,model-view-controller,taglib,Java,Spring Mvc,Jsp,Model View Controller,Taglib,我在提交表单时将ArrayList发回控制器时遇到问题。我可以通过以下方式获得我的价值观: @RequestBody MultiValueMap<String, String> formData public class CustomPayCodesWrapper { public ArrayList<CustomPayCodesModel> customCodes; public ArrayList<CustomPayCodesModel&g
@RequestBody MultiValueMap<String, String> formData
public class CustomPayCodesWrapper {
public ArrayList<CustomPayCodesModel> customCodes;
public ArrayList<CustomPayCodesModel> getCustomCodes() {
return customCodes;
}
public void setCustomCodes(ArrayList<CustomPayCodesModel> customCodes) {
this.customCodes = customCodes;
}
}
My.jsp:
<c:forEach var="item" items="${payCodes.customCodes}">
<div class="row col-md-9">
<div class="form-group row">
<label for="payCode" class="col-md-2 col-form-label">${item.codeName}</label>
<div class="col-md-10">
<input type="text" class="form-control" id="payCode" name="${item.codeName}" value="${item.codeValue}">
</div>
</div>
</div>
</c:forEach>
${item.codeName}
我尝试了以下控制器绑定,但没有成功:
@RequestMapping(value = "updateCustomPaymentCodes", method = RequestMethod.POST)
public ModelAndView updateCustomPayCodes(ModelAndView modelAndView, @ModelAttribute(value = "payCodes") CustomPayCodesWrapper userListWrapper,
ArrayList<CustomPayCodesModel> customCodes, @RequestBody MultiValueMap<String, String> formData, CustomPayCodesWrapper userListWrapper2) {
return showCustomPaymentCodes(modelAndView);
}
@RequestMapping(value=“updateCustommentCodes”,method=RequestMethod.POST)
公共模型和视图更新公司代码(ModelAndView ModelAndView,@ModelAttribute(value=“payCodes”)自定义PayCodesRapper用户列表包装器,
ArrayList customCodes、@RequestBody多值映射formData、CustomPayCodesRapper userListWrapper2){
退货展示客户付款代码(modelAndView);
}
SpringMVC在用于解析参数的html中查找特定字段格式。对于数组,它正在查找name=“customCodes[${status.index}].codeValue”
字段。这将转换为HTML,即name=“customCodes[0].codeValue”
和name=“customCodes[1].codeValue”
等等。这些字段将被找到并用于绑定到列表
或数组
元素。我只获得了以下列表:
@PostMapping("/")
public ModelAndView updateCustomPayCodes(@ModelAttribute CustomPayCodesWrapper payCodes) {
payCodes.customCodes.forEach(m->System.out.println(""+m.codeName+":"+m.codeValue));
return buildModelAndView();
}
及
${customCode.codeName}
这是基于关于做同样事情的教程谢谢,你说得对。使用隐藏字段+索引是关键。如果没有隐藏字段,绑定将无法工作,请继续!谢谢你接受答案。隐藏字段与绑定无关。name=“customCodes[${status.index}].codeName”字段及其格式是处理绑定的内容。请参阅更新。
@PostMapping("/")
public ModelAndView updateCustomPayCodes(@ModelAttribute CustomPayCodesWrapper payCodes) {
payCodes.customCodes.forEach(m->System.out.println(""+m.codeName+":"+m.codeValue));
return buildModelAndView();
}
<c:forEach items="${payCodes.customCodes}" var="customCode" varStatus="status">
<div class="row col-md-9">
<div class="form-group row">
<label for="payCode" class="col-md-2 col-form-label">${customCode.codeName}</label>
<input type="hidden" name="customCodes[${status.index}].codeName" value="${customCode.codeName}"/>
<div class="col-md-10">
<input type="text" class="form-control" name="customCodes[${status.index}].codeValue" value="${customCode.codeValue}"/>
</div>
</div>
</div>
</c:forEach>