У меня есть что-то вроде ниже, что, конечно, работает, если пользователь ранее ввел свои неправильные учетные данные.
Однако, если я напрямую перейду к моему неудачному 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>
Ответ 1 · рейтинг 3 · Aeseir
Вы можете использовать оператор 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>
Ответ 2 · рейтинг 2 · Sarvar Nishonboyev
Попробуйте этот код, он более оптимален:
${session['SPRING_SECURITY_LAST_EXCEPTION']?.message}
? - проверяет, не является ли ресурс нулевым
Ответ 4 · Devraj Giri
В вашем контроллере установите нулевую строковую переменную как
String nullvalue="";
model.addAttribute("nullvalue",nullvalue);
model.addAttribute("entity",entity);
затем в вашем классе просмотра, как в тимелеафе
<td data-th-if="${entity.field != nullvalue}">ok</td>