首页 > 解决方案 > 如何使用提交表单发布子对象的数组列表?

问题描述

我正在尝试发布一个表格,看看当某些字段出现错误时会发生什么。

我使用 Thymeleaf 获取对象并将其放入表单中发布的输入中。

当我在字段(BindingResults)中有错误时,除了其中两个是 ArrayList < ChildrenObject > 之外,所有字段都被正确发送

<input id="roles" name="roles" th:value="${user.roles}"/>

在我的 post 方法中,dto(用户)包含所有字段,但不包含角色。

@RequestMapping(method = RequestMethod.POST, path = "/users/{id}")
String editUser(@Valid @ModelAttribute("user") UserRestDto dto, BindingResult errors, @RequestParam String id) {

发布后,设置了所有值,我看到了错误,但没有看到这两个字段。

标签: htmlspringformsthymeleaf

解决方案


我认为您需要modelAttribute="user" 在表单中定义:

<form:form action="/someaction" method="POST"  modelAttribute="user">

例如,如果您有这样的表格:

<form:form action="/someaction" method="POST"  modelAttribute="user">
  ...
 <form:select path="users" items="${users}" multiple="true" />
  ...
</form>

你的 Spring mvc 代码应该是这样的:

@RequestMapping(value = "/someaction", method = RequestMethod.POST)
    public ModelAndView someaction(@ModelAttribute(value = "user") UserRestDto user) {

推荐阅读