【问题标题】:dynamically generated thymeleaf input with javascript and send its value to the controller is not working使用 javascript 动态生成 thymeleaf 输入并将其值发送到控制器不起作用
【发布时间】:2016-06-01 13:07:41
【问题描述】:

我有一个包含 th:fields 行的表,一切正常。
我需要添加新行,所以我用 javascript 完成了,但是当我提交表单时,这些新行没有提交。我需要一个特殊的魔法吗?

th:field="*{configuredProperties[__${iterator.index}__].propertyType}"

谢谢!

编辑: 我这样创建一行:

function addProperty() {
        var rows = $('#propertiesTable tbody tr');
        var row = rows[0];
        var clone = row.cloneNode(true);

        clone.getElementsByTagName('input')[0].value = null;
        clone.getElementsByTagName('input')[1].value = null;
        clone.getElementsByTagName('input')[2].value = null;

        var lastRow = rows[rows.length - 1];
        var newId = parseInt(lastRow.getAttribute("id")) + 1;
        clone.id = newId;

        var link = $(clone).find('#removeProperty')[0];
        link.setAttribute('onclick', 'removeProperty(' + newId + ')');


        var propertyType = $(clone).find('#propertyType')[0];
        propertyType.setAttribute('name', '*{configuredProperties[' + newId + '].propertyType');
        var propertyName = $(clone).find('#propertyName')[0];
        propertyName.setAttribute('name', '*{configuredProperties[' + newId + '].propertyName');
        var defaultValue = $(clone).find('#defaultValue')[0];
        defaultValue.setAttribute('name', '*{configuredProperties[' + newId + '].defaultValue');    

        var tbody = $('#propertiesTable tbody')[0];
        tbody.appendChild(clone);
}

【问题讨论】:

  • 你能发布你的javascript代码吗?添加行的那个。
  • 嗨@Aboodz,我将其添加到问题中。

标签: javascript java spring-boot thymeleaf


【解决方案1】:

在此块中,您需要提供 bean 字段的名称

   var propertyType = $(clone).find('#propertyType')[0];
    propertyType.setAttribute('name', '*{configuredProperties[' + newId + '].propertyType');
    var propertyName = $(clone).find('#propertyName')[0];
    propertyName.setAttribute('name', '*{configuredProperties[' + newId + '].propertyName');
    var defaultValue = $(clone).find('#defaultValue')[0];
    defaultValue.setAttribute('name', '*{configuredProperties[' + newId + '].defaultValue'); 

通过像这样构造字段

   var propertyType = $(clone).find('#propertyType')[0];
    propertyType.setAttribute('name', 'configuredProperties[' + newId + '].propertyType');
    var propertyName = $(clone).find('#propertyName')[0];
    propertyName.setAttribute('name', 'configuredProperties[' + newId + '].propertyName');
    var defaultValue = $(clone).find('#defaultValue')[0];
    defaultValue.setAttribute('name', 'configuredProperties[' + newId + '].defaultValue');  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    • 2018-04-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 2019-02-26
    • 1970-01-01
    相关资源
    最近更新 更多