首页 > 解决方案 > spring boot 将参数从列表传递到控制器

问题描述

我认为我有一个对象列表:

<tbody>
    <tr th:each="object : ${myObjects}">
        <td><span th:text="${object.id}"> </span></td>
        <td><span th:text="${object.name}"> </span></td>
        <td><span th:text="${object.address}"></span></td>
        <td>
            <a href="#" data-toggle="modal" data-target="#ADD_SOME_INFO_MODAL">
                <i class="fas fa-plus"></i>
            </a>
        </td>
    </tr>
</tbody>

最后一列中的按钮启动模式。在模态中,我可以为记录添加一些值:

    <form th:action="@{/add-data}"
          method="post"
          class="form">
        <input name="NEW-DATA">
        <div class="modal-footer">
            <button name="login-submit"
                    type="submit">
                <i class="fas fa-plus"></i>
            </button>
        </div>
    </form>

这是我的控制器:

@PostMapping("/add-data")
public String addData(@RequestParam String URL) {
   ... do logic...
    return "index";
}

我在我的方法中得到了正确的输入值addData(),但是我找不到一种方法来从首先在列表上单击的对象传递一个 id。我需要这个对象 ID 才能正确存储附加信息。我想可能会做一个单独的页面来为每条记录添加这些信息,但这似乎不适合简​​单和小的编辑/添加。有什么方法可以在 Spring Boot 中添加对模态的编辑?我无法在任何地方找到正确的答案,所以我在这里。

标签: springspring-boot

解决方案


您将 URL 参数传递给控制器​​,只需以相同的方式将值传递给控制器​​。

你需要的粘合剂是 JavaScript。当用户单击按钮打开模态时,使用 JS 将值复制到模态表单标签上的隐藏输入字段中。提交表单后,您复制的值也将被提交并在您的控制器中可用。您可以使用虚拟值编写隐藏的输入字段,然后通过 JS 更改该值。

 <input type="hidden" id="myHiddenField" name="myHiddenField" value="CHANGE_ME">

您打开模式的按钮可能如下所示:

<i class="fas fa-plus" onclick="document.getElementById('myHiddenField').value='${object.id}'"></i>

现在模态表单中的隐藏字段具有您想要的值。


推荐阅读