我使用Spring生成了一个Spring应用程序,使用了嵌入式Tomcat + Thymeleaf模板引擎,并将其打包为一个可执行的JAR文件。
所使用的技术:
Spring Boot 1.4.2 Thymeleaf,Spring 4.3.4 Thymeleaf,Thymeleaf 2.1.5 Thymeleaf,Tomcat Embed 8.5.6,Maven 3,Java 8
我有这门课
public class AlarmNotification {
private Long id;
private Action action;
private Application aplication;
private Device device;
private TimeLapse timeLapse;
private Guardian guardian;
private List<SystemAlarm.Level> level;
...
}而这个模板
<form class="form-style-9" action="#" th:action="@{/alarmNotification/save}" th:object="${alarmNotification}" method="post">
<ul>
<li>
<input type="hidden" th:field="*{id}" />
<select name="device" class="field-style field-split align-left">
<option value="ANDROID">ANDROID</option>
<option value="IOS">IOS</option>
</select>
<select th:field="*{guardian}">
<option th:each="guardian : ${guardians}"
th:value="${guardian.id}"
th:text="${guardian.name}"></option>
</select>
</li>
<li>
<select th:field="*{timeLapse}">
<option th:each="timeLapse : ${timeLapses}"
th:value="${timeLapse.id}"
th:text="${timeLapse.description}"></option>
</select>
</li>
<li>
<select th:field="*{level}" multiple="multiple">
<option th:each="level : ${alarmLevels}"
th:value="${level}"
th:text="${level}"></option>
</select>
</li>
<li>
</li>
<li>
<input type="submit" value="SAVE" />
</li>
</ul>
</form>控制员:
@RequestMapping(value = { "/save" }, method = RequestMethod.POST)
public String saveAlarmNotification (@Valid AlarmNotification alarmNotification, BindingResult bindingResult, Model model) throws DataAccessException, SQLException {
System.out.println ("<-------------------------------------->");
System.out.println (alarmNotification);
System.out.println ("<-------------------------------------->");
..
}但是,除了设备和级别之外,对象alarmNotification的所有值都是空的:
AlarmNotification [id=null, action=null, aplication=null,
device=Device [id=null, deviceKey=ANDROID],
timeLapse=null, guardian=null,
level=[HIGH, MEDIUM, LOW]]发布于 2017-03-19 22:58:35
我认为在选择标记中th:value不正确,id没有正确设置。
对监护人来说应该是这样的
<select th:field="*{guardian}">
<option th:each="guardian : ${guardians}"
th:value="${guardian.id}"
th:text="${guardian.name}"></option>
</select>因为timeLapse应该是这样声明的
<select th:field="*{timeLapse}">
<option th:each="timeLapse : ${timeLapses}"
th:value="${timeLapse.id}"
th:text="${timeLapse.description}"></option>
</select> 在这个级别上,我认为你通过了错误的字段(看起来可能是那样的)
<select th:field="*{level}" multiple="multiple">
<option th:each="level : ${alarmLevels}"
th:value="${level}"
th:text="${level}"></option>
</select>我希望这能帮到你。
https://stackoverflow.com/questions/42890352
复制相似问题