Thymeleaf:th:text 仅当不为空时?

Thymeleaf: th:text only if not null?

我有类似下面的内容,如果用户之前输入了错误的凭据,这当然有效。

但是如果我直接去我的登录失败 url /login?error 例如没有任何以前不正确的登录,session[SPRING_SECURITY_LAST_EXCEPTION] 当然是 null 我得到一个讨厌的404.

<span th:text="${session[SPRING_SECURITY_LAST_EXCEPTION].message}">Invalid credentials</span>

问题

是否有像下面这样的处理器(大部分时间写和读太长),还是我应该自己动手?

<span th:text="${session[SPRING_SECURITY_LAST_EXCEPTION] != null ? session[SPRING_SECURITY_LAST_EXCEPTION].message : #messages.msg('AbstractUserDetailsAuthenticationProvider.badCredentials')}">
    Invalid credentials
</span>

您可以使用th:if语句:

<span th:if="${session[SPRING_SECURITY_LAST_EXCEPTION].message}" th:text="${session[SPRING_SECURITY_LAST_EXCEPTION].message}">Invalid credentials</span>

只有存在值时才会显示此行。

编辑 1:

额外检查:

<span th:if="${session[SPRING_SECURITY_LAST_EXCEPTION] != null and session[SPRING_SECURITY_LAST_EXCEPTION].message != null}" th:text="${session[SPRING_SECURITY_LAST_EXCEPTION].message}">Invalid credentials</span>

试试这个:

<span th:if="${session[SPRING_SECURITY_LAST_EXCEPTION].message != null}">
    <span th:text="${session[SPRING_SECURITY_LAST_EXCEPTION].message}">Invalid credentials</span>
</span>

试试这个代码,它更优化:

${session['SPRING_SECURITY_LAST_EXCEPTION']?.message}

? - 检查资源是否不为空

在您的控制器中将空字符串变量设置为

String nullvalue="";
model.addAttribute("nullvalue",nullvalue);
model.addAttribute("entity",entity);

那么在你看来 class 就像百里香

<td data-th-if="${entity.field != nullvalue}">ok</td>