首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Thymeleaf - SpringBoot中的绑定对象

Thymeleaf - SpringBoot中的绑定对象
EN

Stack Overflow用户
提问于 2017-03-19 18:20:11
回答 1查看 4K关注 0票数 1

我使用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

我有这门课

代码语言:javascript
复制
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;

    ...
}

而这个模板

代码语言:javascript
复制
<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>

控制员:

代码语言:javascript
复制
@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的所有值都是空的:

代码语言:javascript
复制
 AlarmNotification [id=null, action=null, aplication=null,
 device=Device [id=null, deviceKey=ANDROID], 
timeLapse=null, guardian=null, 
level=[HIGH, MEDIUM, LOW]]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-19 22:58:35

我认为在选择标记中th:value不正确,id没有正确设置。

对监护人来说应该是这样的

代码语言:javascript
复制
<select th:field="*{guardian}">
      <option th:each="guardian : ${guardians}" 
             th:value="${guardian.id}" 
             th:text="${guardian.name}"></option>
</select>

因为timeLapse应该是这样声明的

代码语言:javascript
复制
<select th:field="*{timeLapse}">
     <option th:each="timeLapse : ${timeLapses}" 
         th:value="${timeLapse.id}" 
         th:text="${timeLapse.description}"></option>
</select>  

在这个级别上,我认为你通过了错误的字段(看起来可能是那样的)

代码语言:javascript
复制
<select th:field="*{level}" multiple="multiple">
             <option th:each="level : ${alarmLevels}" 
                 th:value="${level}" 
                 th:text="${level}"></option>
        </select>

我希望这能帮到你。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42890352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档