Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ModelAttribute只将第一个值添加到列表中_Java_Spring Mvc_Modelattribute - Fatal编程技术网

Java ModelAttribute只将第一个值添加到列表中

Java ModelAttribute只将第一个值添加到列表中,java,spring-mvc,modelattribute,Java,Spring Mvc,Modelattribute,在我的视图中,我生成输入“username”,选择属性multiple=multiple,其名称为“rolesss” 我的问题是,若我通过post发送这样的表单,我的控制器应该将角色转换为列表,但我只得到包含单个元素的列表 例如: 我发送了一篇文章,内容包括: username:MyUser _csrf:aef50238-92cf-48df-86a4-cb6e2b8f62c9 rolesss:USER rolesss:ADMIN 在控制器的调试模式下,我看到以下值: roless:“用户” 用

在我的视图中,我生成输入“username”,选择属性multiple=multiple,其名称为“rolesss”

我的问题是,若我通过post发送这样的表单,我的控制器应该将角色转换为列表,但我只得到包含单个元素的列表

例如: 我发送了一篇文章,内容包括:

username:MyUser
_csrf:aef50238-92cf-48df-86a4-cb6e2b8f62c9
rolesss:USER
rolesss:ADMIN
在控制器的调试模式下,我看到以下值: roless:“用户” 用户名:“MyUser”

“管理员”真的不见了

我的控制器看起来像:

@Controller
@RequestMapping("/user-management")
public class UserManagementController {

    @RequestMapping("")
    public ModelAndView home() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("pages/user-management");

        return modelAndView;
    }

    @RequestMapping(value = "", method = RequestMethod.POST)
    public ModelAndView changeRoles(@ModelAttribute("username") String username,@ModelAttribute("rolesss") List<String> rolesss) {

        return null;
    }

}
@控制器
@请求映射(“/user management”)
公共类用户管理控制器{
@请求映射(“”)
公共模型和视图主页(){
ModelAndView ModelAndView=新建ModelAndView();
setViewName(“页面/用户管理”);
返回模型和视图;
}
@RequestMapping(value=”“,method=RequestMethod.POST)
公共模型和视图更改角色(@modeldattribute(“username”)字符串用户名,@modeldattribute(“rolesss”)列表rolesss){
返回null;
}
}
我的观点我将2个thymeleaf片段合并成1个,在我的代码中#用户角色表单在单独的片段中,但我认为它不应该改变任何东西:

<th:block layout:fragment="main-content">
    <section>
        <h2 class="section-title no-margin-top">Role Management</h2>
        <div class="form-group">
            <div class="panel panel-primary">
                <div class="panel-heading">Změna rolí uživatele</div>
                <div class="panel-body">
                    <form class="form-horizontal" role="form" action="/user-management" method="post">
                        <div class="form-group">
                            <label for="user-name" class="col-sm-2 control-label">Uživatel</label>
                            <div class="col-sm-10">
                                <input id="user-name" class="autocomplete form-control" type="text"
                                       placeholder="Jméno uživatele" name="username"/>
                            </div>
                            <input type="hidden"
                                   th:name="${_csrf.parameterName}"
                                   th:value="${_csrf.token}"/>
                        </div>
                        <div id="user-roles-form" th:fragment="roles(roles)" xmlns:th="http://www.thymeleaf.org">
                            <div class="form-group">
                                <label for="user-roles" class="col-sm-2 control-label">Uživatelovy role</label>
                                <div class="col-sm-10">
                                    <select multiple="multiple" class="form-control" id="user-roles" name="rolesss">
                                        <th:block th:each="role : ${roles}">
                                            <option th:value="${role.userRole.role}" th:text="${role.userRole.role}" th:selected="${role.selected}"></option>
                                        </th:block>
                                    </select>
                                </div>
                            </div>
                            <div class="form-group">
                                <div class="col-sm-offset-2 col-sm-10">
                                    <button type="submit" class="btn btn-ar btn-primary">Uložit</button>
                                </div>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </section>
</th:block>

角色管理
Změna rolíuživatele
乌živatel
Uživatelovy角色
乌洛季特

尝试在控制器中使用下面的方法

在HTML或JSP中

 <form modelAttribute="your_model_name"></form>

使用该输入的视图文件是什么样子的?我只是添加了视图,但我认为这并不重要,因为在浏览器开发工具中,我可以看到我添加到问题中的表单数据的内容。如何通过ajax提交表单是直接表单提交的,而不是
@modeldattribute(“用户名”)
使用
@RequestParam(“用户名”)
我使用按钮提交提交。唯一奇怪的是,输入用户名是自动完成。用户选择用户后,ajax生成“用户角色”表单,其中包含select和button元素
@RequestMapping(value = "", method = RequestMethod.POST)
public ModelAndView changeRoles(@RequestParam("username") String username,@RequestParam("rolesss") List<String> rolesss) {
     ..........
     .........
    return null;
}