Я пытаюсь использовать функцию JavaScript в моем шаблоне Thymeleaf, который использует переменную Thymeleaf, например:
<div th:object="${orderBy}">
<form method="get" th:action="@{/}">
<fieldset id="ordenacao">
<legend>Ordenar</legend>
<select th:name="orderBy">
<option th:each="orderBy : ${T(br.com.teste.segware.util.OrderTypes).values()}"
th:value="${orderBy}" th:text="${orderBy.displayValue}" ></option>
</select> <br/> <br/>
<input id="orderButton" th:onclick="'javascript:enableBtn(\'' + ${orderBy.displayValue} + '\');'"
type="submit" value="Ordenar">
</fieldset>
</form>
</div>
Переменная является опцией из этого Enum (который использует Lombok для создания геттера):
@Getter
public enum OrderTypes {
SELECIONE("Selecione..."),
RECENTES("Recentes Primeiro"),
ANTIGAS("Antigas Primeiro"),
MAISUP("Mais Upvotes"),
MENOSUP("Menos Upvotes");
private final String displayValue;
private OrderTypes(String displayValue) {
this.displayValue = displayValue;
}
}
Параметры из меню с th:each правильно отображаются в отображаемом HTML в виде раскрывающегося меню выбора/параметров.
Но когда я использую ту же переменную, которая отображается как параметр JavaScript для метода, я получаю следующую ошибку:
Это функция JS (очень простая):
Итак, если ТАКОЙ ЖЕ параметр отображается правильно в представлении, то почему в th:onclick пишет, что не удалось найти переменную из объекта?
function enableBtn(select)
{
if(select == 'SELECIONE' || select == 'Selecione...')
{
document.getElementById('orderButton').disabled = true;
};
}
Вот что я пробовал до сих пор:
Пожалуйста, как, черт возьми, эта штука работает? заранее спасибо
th:onclick="'javascript:enableBtn(\'' + ${orderBy.displayValue} + '\');'"
th:onclick="|enableBtn('${orderBy.displayValue}');|"
th:data-enable='|{${orderBy.displayValue}}|' th:onclick="'enableBtn('enable')';'"
Базовый JS для отключения/включения кнопки при изменении выбора.