在Thymeleaf和Spring中以编程方式生成输入类型

时间:2018-09-30 22:00:21

标签: spring-boot thymeleaf

我有一个需要根据bean值识别表单输入类型的要求。

元素bean具有属性名称,标签,类型和强制性。

如果类型值为“文本”,则<input type="text">应该显示在页面上。

如果输入type =“ File”,<input type="file">应该显示在页面上。

我的豆子:

    public class Element {
        private String name;
        private String label;
        private String type;
        private String mandatory;
        private String value;
    }

    Config JSON:

    {"input": [
        {
          "name": "file1",
          "label": "File 1",
          "type": "File",
          "mandatory": "true"
        },
        {
          "name": "Indicator",
          "label": "Indicator",
          "type": "text",
          "mandatory": "true"
        }
      ]}

控制器将读取JSON并填充元素对象列表。

在用户界面上,当我尝试添加以下代码时,它没有生成预期的输入类型。

仅在以下代码中使用时,我就能看到所有值:

<div th:each="element: ${accelerator_input}">
<p th:text="${element.label}" />

但是当我在代码中添加输入类型时,它不起作用。

    <div th:each="element: ${accelerator_input}">
                    <p th:text="${element.label}" />
                    <input type="${element.type}"  name=${element.name}
                        th:field="${element.value}" />
    </div>

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

如果您希望Thymeleaf处理属性,则必须在属性前加上th:

<div th:each="element: ${accelerator_input}">
  <p th:text="${element.label}" />
  <input th:type="${element.type}" th:name="${element.name}" th:field="${element.value}" />
</div>