Thymeleaf - 访问嵌套对象属性

时间:2016-02-04 03:20:32

标签: java spring thymeleaf

这里的菜鸟问题,我有<input>我希望使用Thymeleaf显示用户的嵌套属性

  • 每个用户都有一个部门
  • 每个部门都有一个名字

我尝试通过将List用户对象发送到我的表单

来访问它
<select id="user">                      
    <option value="" th:text="-Select-"></option>
    <option 
        th:each="user: ${users}" 
        th:value="${user.id}"  
        th:text="${user.name}"
        th:attr="data-department=${user.department.name}">
    </option>
</select>

Thymeleaf可以找到嵌套的部门对象(返回[object, Object]),但在尝试访问部门的名称时,在尝试访问部门的name时会命名为SpringExpressionLanguage异常。

org.springframework.expression.spel.SpelEvaluationException: EL1007E:(pos 0): Property or field 'name' cannot be found on null

我还在阅读文档,但还没有找到如何访问它,这可能非常简单。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

显然,其中一个用户没有部门,因此离职人员是null。 Thymeleaf无法获得null属性的值。这就是你得错的原因。在输出之前尝试检查部门不是null

<select id="user">                      
        <option value="" th:text="-Select-"></option>
        <option 
            th:each="user: ${users}" 
            th:value="${user.id}"  
            th:text="${user.name}"
            th:attr="data-department=${user.department!=null}?${user.department.name}:'not specified'">
        </option>
    </select>