Spring+Thymeleaf使用th:field="*{id}"出现模板解析错误如何解决?
异常产生原因
你的表单绑定的对象是Course类实例,但是你在表单项中使用th:field="*{id}"尝试绑定id属性:
Course类本身没有声明id字段,仅声明了主键courseId,不存在对应的getId()/setId()方法,Spring无法读取该属性,直接抛出不可读属性异常- 你需要绑定的用户id属于
Course类关联的User属性,但你当前的Course类没有补充user属性的getter/setter方法,就算直接写关联属性也无法正常读取
解决方案
- 先完善
Course类的代码,补充user属性的getter、setter方法:
// 追加到Course类末尾 public User getUser() { return user; } public void setUser(User user) { this.user = user; }
- 修改表单中的字段绑定逻辑,将直接绑定
id改为绑定关联的user.id属性:
把course_form.html中对应的输入框代码:
<input type="text" th:field="*{id}" class="form-group" required minlength="5" maxlength="45">
替换为:
<input type="text" th:field="*{user.id}" class="form-group" required minlength="5" maxlength="45">
- 可选优化:给教师下拉选也加上绑定逻辑,实现选中教师自动赋值的效果,修改select标签为:
<select th:field="*{user.id}" class="col col-sm-8">
内容的提问来源于stack exchange,提问作者Kirill
相关产品推荐
相关产品推荐

