#thymeleaf
#thymeleaf
Вопрос:
Это URL-адрес, который я использую для входа на страницу без каких-либо параметров запроса.
http://localhost:8080/signin
Это URL-адрес страницы входа с ошибкой неверных учетных данных,
http://localhost:8080/signin?param.error=bad_credentials
Теперь я проверяю param.error
, как показано ниже,
<div class="error" th:if="${(param.error != null) and (param.error[0] == 'bad_credentials')}">
Когда я загружаю страницу входа, я получаю исключение SpringEL,
Exception evaluating SpringEL expression: "(param.error != null) and (param.error[0] == 'bad_credentials')"
Я думаю, поскольку при загрузке страницы входа в систему параметров запроса нет, он не может их найти param.error
.
Как я могу правильно проверить, содержит ли URL параметры запроса?
Комментарии:
1. попробуйте th: if=»${param.error} и ${param.error[0] == ‘bad_credentials’}»
2. Я не заметил, что вы на самом деле назвали свой параметр ‘param.error’. Попробуйте отправить запрос на localhost:8080/signin?ошибка =bad_credentials .
Ответ №1:
Это сложно. В документации, которую вам рекомендуется использовать:
${param.containsKey('foo')}
Но это не работает, и когда вы смотрите на исходный код этого класса, внезапно становится ясно:
@Override
public boolean containsKey(final Object key) {
return true;
}
В итоге я получаю:
${param.keySet().contains('foo')}
Ответ №2:
Мне удалось это сделать 🙂 Возможно, это немного уродливый способ получить param, но он работает.
<div th:with="myMap=${#ctx.requestParameters}">
<span th:if="${#maps.containsKey(myMap, 'param')}" th:text="${'requestParam: ' #ctx.requestParameters.get('param')[0]}"></span>
</div>
Мой адрес: http://localhost:8080/thvsjsp/subscribeth?param=something
Вывод: requestParam: something
HTH
Редактировать:
Вот гораздо лучший способ:
<span th:if="${param.abc != null}" th:text="${'requestParam: ' param.abc[0]}"></span>
Параметр запроса является String[]
, и именно поэтому нам нужно использовать [0]
Комментарии:
1. «если» можно упростить еще больше:
th:if="${param.abc}"