gpt4 book ai didi

java - ModelAttribute 仅将第一个值添加到列表中

转载 作者:行者123 更新时间:2023-12-02 11:55:32 28 4
gpt4 key购买 nike

在我看来,我生成输入“用户名”,使用属性 multiple=multiple 选择,其名称为“rolesss”。

我的问题是,如果我通过邮寄发送此类表单,我的 Controller 应该将角色转换为列表,但我只得到包含单个元素的列表。

例如:我发送帖子,其中包含值:

username:MyUser
_csrf:aef50238-92cf-48df-86a4-cb6e2b8f62c9
rolesss:USER
rolesss:ADMIN

在 Controller 的 Debug模式下,我看到值:角色:“用户”用户名:“我的用户”

“ADMIN”确实消失了。

我的 Controller 看起来像:

@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;
}

}

我的观点是,我将 2 个 thymeleaf 片段合并为 1 个,在我的代码中 #user-roles-form 位于单独的片段中,但我认为它不应该改变任何内容:

<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>

最佳答案

尝试在 Controller 中使用如下所示

在 HTML 或 JSP 中

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

如果您使用模型属性,则使用@ModelAttribute

否则,使用@RequestParam("username")

就你的情况

@RequestMapping(value = "", method = RequestMethod.POST)
public ModelAndView changeRoles(@RequestParam("username") String username,@RequestParam("rolesss") List<String> rolesss) {
..........
.........
return null;
}

关于java - ModelAttribute 仅将第一个值添加到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47630243/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com