【发布时间】:2020-06-29 06:23:55
【问题描述】:
我正在尝试为我的 web 应用程序中的多选字段创建一个片段。但是我遇到了关于传递应该绑定到选择元素的字段的各种问题。我想我有一个语法错误,但我不确定它是什么。
对于 addUser.jsp 文件中的 selectedField,我尝试过 ${selectedAdminAccess}、*{selectedAdminAccess}、${userForm.selectedAdminAccess} 等。
通过这些不同的组合,在 forms.html 文件中,我尝试了 ${selectField}、*{selectField} 和预处理器指令:${__${selectField}__}。我是不是错过了正确的组合?
我得到的错误是“Bean name 'X' 的 BindingResult 和普通目标对象都不能用作请求属性”。其中 X 是(对于预处理器尝试)在 addUser.jsp 页面中输入的字段名,或者在不使用预处理器尝试时为“selectField”。
这就是我所拥有的。
控制器
@GetMapping(value={"/adduser"}
public ModelAndView getAddUserPage(Model model, @RequstParam(required = false) Long selectedUserId) {
ModelAndView mav = new ModelAndView("/addUser");
UserForm userForm = new UserForm();
mav.addObject("userForm", userForm);
return mav;
}
模型用户窗体
public class UserForm {
private List<Office> adminAccess = new ArrayList<>();
private List<String> selectedAdminAccess = new ArrayList<>();
// Getter/Setter
...
}
addUser.jsp
<form method="post" action="#" data-th-action="@{/addUser}" data-th-object="${userForm}">
<!-- other interesting page stuff -->
<div data-th-replace="fragments/forms.html :: multi-select(
id='adminSelect',
selectClass='office-target',
selectField='*{selectedAdminAccess}',
optionList='*{adminAccess}',
optionListValue='id',
optionListText='name',
size=8)"></div>
</form>
forms.html
<div data-th-fragment="multi-select(id, selectClass, selectField, optionList, optionListValue, optionListText, size)" >
<select id="${id}" class="mdb-select colorful-select md-form ${selectClass}" size="${size}" multiple
searchable data-th-field="${__${selectField}__}">
<option data-th-each="option : ${adminAccess}"
data-th-value="${option.__${optionListValue}__}"
data-th-text="${option.__${optionListText}__}"></option>
</select>
</div>
【问题讨论】:
标签: java html spring thymeleaf