一尘不染

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

jsp

我有类似下面的内容,如果用户先前输入了错误的凭据,那当然可以工作。

但是,如果我直接进入登录失败网址/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>

阅读 619

收藏
2020-06-10

共1个答案

一尘不染

您可以使用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>
2020-06-10