Как установить thymeleaf th: значение поля из другой переменной
У меня есть простое текстовое поле ввода, где я должен установить значение по умолчанию из одного объекта и сохранить его окончательное значение в другом. Следующий код не работает.
<div th:object="${form}">
<input class="form-control"
type="text"
th:value="${client.name}" //this line is ignored
th:field="*{clientName}"/>
</div>
форма - объект DTO, а клиент - объект Entity из базы данных.
Каков правильный способ решить эту ситуацию?
Не работает я имею в виду - скажем, что начальными значениями являются client.name = "Foo" и form.clientName = null.
Мне нужно, чтобы отображаемое значение поля ввода было "Foo" и после значения формы формы form.clientName стало "Foo" . Но поле ввода ничего не отображает, и при представлении form.clientName значение все равно null;
Если кто-то заинтересован, решите эту проблему, используя следующую структуру (нашли ответ в другом вопросе).
th:attr="value = ${client.name}"
Ответы
Ответ 1
Вы можете подойти к этому методу.
Вместо использования th:field
используйте html id
и name
. Задайте значение с помощью th:value
<input class="form-control"
type="text"
th:value="${client.name}" id="clientName" name="clientName" />
Надеюсь, это поможет вам
Ответ 2
Он имеет 2 возможных решения:
1) Вы можете установить его в представлении javascript... (не рекомендуется)
<input class="form-control"
type="text"
id="tbFormControll"
th:field="*{clientName}"/>
<script type="text/javascript">
document.getElementById("tbFormControll").value = "default";
</script>
2) Или лучшим решением является установка значения в модели, которое вы присоединяете к представлению в GET-операции контроллером. Вы также можете изменить значение в контроллере, просто сделайте объект Java из $client.name и вызовите setClientName.
public class FormControllModel {
...
private String clientName = "default";
public String getClientName () {
return clientName;
}
public void setClientName (String value) {
clientName = value;
}
...
}
Надеюсь, это поможет.