如何使用ThymeLeaf将对象的属性绑定到隐藏字段?

时间:2018-10-26 15:27:35

标签: java html thymeleaf

HTML-百里香叶模板:

<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;

如果用户选择了第一个选项(Dulce de Leche),我需要在我的 Gusto 类中的 int idCategoria 值取1。第二个,第三个是3,第四个是4,但我不知道如何用ThymeLeaf做到这一点!此逻辑基于 categoria 属性,如果categoria等于某个名称,则categoriaId将是某个数字...例如:如果categoria等于'Dulces de Leche',则categoriaId应为'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

2 个答案:

答案 0 :(得分:1)

您可以使用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.
})

因此,现在,每次更改类别时,都会在id中添加一个新值。希望能帮助到你!如果您还有其他需要,请告诉我。

答案 1 :(得分:0)

尝试一下:

<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