Spring 百里香叶+;春天使用对象方法代替表单中的另一个块

Spring 百里香叶+;春天使用对象方法代替表单中的另一个块,spring,forms,thymeleaf,Spring,Forms,Thymeleaf,我有一个典型的updateUser表单,它是用Thymeleaf+Spring构建的。我可以列出用户角色,但我正在尝试将它们放入selectbox组件中。我正在处理这一行th:selected=“${user.hasRole(role.role)}”。现在,我知道这个组件可以工作,这只是访问布尔函数来启用它的问题。我试图使用select th:object引用form对象的函数。我的语法不起作用。我还尝试访问该函数,就像以前的输入标记一样(只使用名称而不使用对象本身。即username,或者在本

我有一个典型的updateUser表单,它是用Thymeleaf+Spring构建的。我可以列出用户角色,但我正在尝试将它们放入selectbox组件中。我正在处理这一行th:selected=“${user.hasRole(role.role)}”。现在,我知道这个组件可以工作,这只是访问布尔函数来启用它的问题。我试图使用select th:object引用form对象的函数。我的语法不起作用。我还尝试访问该函数,就像以前的输入标记一样(只使用名称而不使用对象本身。即username,或者在本例中是hasRole()。这也不起作用

<form th:object="${user}"
th:action="@{'/admin/usermanagement/adduser'} " method="post">

    <div class="row">
        <div class="col-md-3 form-group">
            <label>Username:</label> <input type="text" class="form-control"
                th:field="*{username}" />
        </div>
    </div>
    <div class="col-md-3">
        <h5>Roles :</h5>
    </div>

    <select class="js-example-basic-multiple" style="width: 75%"
        name="froles" id="froles" multiple="multiple">
        <option th:each="role : ${roles}" th:value="${role.role}" 
        th:selected="${user.hasRole(role.role)}"
        th:text="${role.role}"></option>
    </select>

    <button type="submit" class="btn btn-primary">Submit</button>

用户名:
角色:
提交

事实上,我的问题是类型。th:selected=“${user.hasRole(role.role)}”是一个字符串,应该是th:selected=“${user.hasRole(role)}”。我在域对象中有这两个方法,所以这很好

th:value=“${role.role}”对于持久性来说是错误的。我想返回role,但在使用role.role时收到以下错误消息 代码[user.roles,roles];参数[];默认消息[roles]];默认消息[未能将类型为'java.lang.String'的属性值转换为属性的必需类型'java.util.List'

使用“${role}”时出现Java空异常