Thymeleaf:th:文本只有不为空?

时间:2015-07-20 18:47:04

标签: jsp thymeleaf template-engine

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

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

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

尝试此代码,它更为理想:

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

? - 检查资源是否为空

答案 2 :(得分:0)

试试这个:

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

答案 3 :(得分:0)

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

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

然后在您的视图类中像百里香一样

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