Как привязать атрибут объекта к скрытому полю, используя ThymeLeaf? - PullRequest
0 голосов
/ 26 октября 2018

HTML - Шаблон ThymeLeaf:

<form th:action="@{/gustos}" method="post" th:object="${gusto}">
    <div class="col s12 l8">
                    <select th:field="*{categoria}">
                        <option value="" disabled="disabled">Categoria</option>
                        <option value="Dulces de Leche">Dulce de Leche</option>
                        <option value="Cremas">Cremas</option>
                        <option value="Chocolates">Chocolates</option>
                        <option value="Frutales">Frutales</option>
                    </select>
    </div>
</form>

Это мои атрибуты класса Java Gusto :

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column
    private int idCategoria;

    @Column
    private String categoria;

    @Column // opcional (name="")
    private String nombre;

Мне нужно, чтобы значение int idCategoria в моем классе Gusto принимало значение 1, если пользователь выбрал первый вариант (Дульсе де Лече), 2 - второй. один, 3 для третьего и 4 для четвертого, но я не знаю, как это сделать с ThymeLeaf !! Эта логика основана на атрибуте categoryoria , если категориям присвоено определенное имя, то для categoryorId будет определенное число ... ПРИМЕР: если категории равны 'Dulces de Leche', идентификатор категории должен быть равен 1 !!!

¡Обратите внимание, я использую привязку объекта в верхней части формы!

Я пробовал это:

  <div th:field="*{idCategoria}">
            <div th:switch="*{categoria}">
                <input type="hidden" th:case="'Dulces de Leche'" value="1" />
                <input type="hidden" th:case="'Cremas'" value="2" />
                <input type="hidden" th:case="'Chocolates'" value="3" />
                <input type="hidden" th:case="'Frutales'" value="4" />
            </div>
  </div>

но это не работает !!! Я хочу сделать логику в шаблоне !!

Как я могу это сделать?

Большое спасибо <3 </p>

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Вы можете использовать jQuery для этого. Просто создайте новый скрытый ввод с пропущенным полем. Ваш код будет выглядеть следующим образом.

Сначала ваш новый вход и выбранные изменения категории

<input id="id" th:field="*{id}" hidden="hidden"/>
<select id="categorias" th:field="*{categoria}">
    <option value="" disabled="disabled">Categoria</option>
    <option value="Dulces de Leche">Dulce de Leche</option>
    <option value="Cremas">Cremas</option>
    <option value="Chocolates">Chocolates</option>
    <option value="Frutales">Frutales</option>
</select>

Теперь ваш JQuery

$('#categorias').on('change', function() {
    var value = $(this).val();
    if(value === "Dulce de Leche") {
        $('#id').val(1);
    }
    // Now you just fill the rest.
})

Так что теперь, каждый раз, когда вы меняете свою категорию, вы добавляете новое значение к идентификатору. Надеюсь, поможет! Если вам нужно что-нибудь еще, пожалуйста, дайте мне знать.

0 голосов
/ 26 октября 2018

Попробуйте это:

<select th:field="*{categoria}">
    <option th:value="" disabled="disabled">Categoria</option>
    <option th:value="1" th:text="Dulces de Leche"></option>
    <option th:value="2" th:text="Cremas"></option>
    <option th:value="3" th:text="Chocolates"></option>
    <option th:value="4" th:text="Frutales"></option>
</select>

Таким образом, когда вы извлекаете значения через ваш бэкэнд, это будет 1, 2 или 3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...