您的模型包括一个
title引用
Title类的属性。这是不一样的
title,你指的是在您的形式,这实际上是一个
titleId。由于
titleId并非的一部分
modelAttribute,因此应将其从
<form:xxx>标记中排除。您将需要使用一个普通
<select>标签来将所选内容传递
titleId回控制器进行处理。不幸的是,使用
<select>标签时,您不能仅使用JSTL设置value属性,因此必须
seelcted基于该
titleId值(如果已设置)有条件地设置该选项的属性。如果
titleList是
Title对象的简单列表,则可以通过
<select>以下方式创建标签:
<select id="titleInput" name="titleId"> <option value=""></option> <c:forEach items="${titleList}" var="title"> <c:when test="${title.titleId== titleId}"> <option value="${title.titleId}" selected>${title.titleName}</option> </c:when> <c:otherwise> <option value="${title.titleId}" >${title.titleName}</option> </c:otherwise> </c:forEach></select>在您的控制器中,
@RequestParam注释将拉出
titleId提交的数据。由于它不是的一部分,因此
modelAttribute您需要确保将其添加为模型属性:
...if (result.hasErrors()) { if (titleId != null) { model.addAttribute("titleId", titleId); // <--This line added model.addAttribute("titleList", titleService.getAll()); Title title = titleService.get(titleId); teacher.setTitle(title); model.addAttribute("teacher", teacher); return "addTeacher"; } else { model.addAttribute("titleList", titleService.getAll()); return "addTeacher"; }}...希望我们这次能做到。



