【问题标题】:How to pass variables to the controller in a submit form in Spirng Boot?如何在 Spring Boot 的提交表单中将变量传递给控制器​​?
【发布时间】:2019-09-14 02:17:52
【问题描述】:

我有一个带有 3 个单选按钮的表单,当按下某个单选按钮时,我想向控制器发送单选按钮的值和我从控制器发送到视图的 Id 变量。

HTML 视图如下所示:

 <form id="form" th:action="@{/buscarEmpresa}">
      <input type="radio" name="filtro" value="dia" onclick="submitForm()"> Día
      <input type="radio" name="filtro" value="mes" onclick="submitForm()"> Mes
      <input type="radio" name="filtro" value="ano" onclick="submitForm()"> Año
 </form>

当某些单选按钮被按下时,我在&lt;script&gt; 标签中使用以下 js 代码:

function submitForm(){
            document.getElementById("form").submit();
        }

控制器如下所示:

@GetMapping("/buscarEmpresa")
    public ModelAndView buscarEmpresa(@RequestParam(name = "empresas", required = false) Integer id,
                                      @RequestParam(name="filtro", required = false) String filtro) {
        ModelAndView mav = new ModelAndView(ViewConstant.DASHBOARD_3);
        mav.addObject("nombreEmpresa", (empresaRepository.getEmpresaByIdEmpresa(id)).getNombre());
        sendEntradas(mav, id);
        sendSalidas(mav, id);
        mav.addObject("empresas", empresaRepository.findAll());
        mav.addObject("idEmpresa", id);
        return mav;
    }

我尝试将th:action 更改为这样的:

th:action="@{/buscarEmpresa?empresas=__${idEmpresas}__}"

idEmpresas 是我从控制器发送的 id 值,我想重新发送它,但是当我提交表单时,它只发送单选按钮的值。我该如何解决这个问题?我使用 Spring Boot 和 Thymeleaf 作为模板引擎。

【问题讨论】:

  • id 是从哪里来的?您是否尝试过在包含 id 的表单中添加隐藏的输入字段?
  • 首先我在下拉列表中获取元素的 id 并将其发送到控制器,接下来我将 id 从控制器发送到上面 buscarEmpresa 方法中的新视图,我想将其重新发送到控制器以使用单选按钮和 id 的选择来更新视图
  • 能否在原始视图中为选定的 id 添加隐藏元素? &lt;form id="form" ...&gt; &lt;input type="hidden" id="empresasId" name="empresasId" value="&lt;empresasId_value_from_select&gt;"&gt; &lt;input type="radio" name="filtro" ...&gt; ... &lt;/form&gt;
  • 但是如果我添加隐藏的输入,在提交表单时它会发送选定的单选按钮和该输入中的 id?
  • 它与隐藏输入一起工作!非常感谢:)

标签: javascript java spring spring-boot spring-mvc


【解决方案1】:

更新您的视图,将选定的 id 作为隐藏的input 嵌入到表单中,以便在每个form submission 上与单选选项一起返回:

<form id="form" th:action="@{/buscarEmpresa}">
  <input type="hidden" id="empresasId" name="empresasId" value="<empresasId_value_from_select>">
  <input type="radio" name="filtro" value="dia" onclick="submitForm()"> Día
  <input type="radio" name="filtro" value="mes" onclick="submitForm()"> Mes
  <input type="radio" name="filtro" value="ano" onclick="submitForm()"> Año
</form>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    相关资源
    最近更新 更多