Подтвердить что ты не робот

Как установить 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}"
4b9b3361

Ответ 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;
    }
    ...
}

Надеюсь, это поможет.