我有类似下面的内容,如果用户之前输入了错误的凭据,这当然有效。
但是,如果我直接转到我的登录失败网址/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>
答案 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>