如何在Spirng Boot中以提交形式将变量传递给控制器​​?

时间:2019-04-24 17:52:59

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

我有一个带有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>

按下某些单选按钮时,我在<script>标签中使用了以下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作为模板引擎。

1 个答案:

答案 0 :(得分:2)

更新视图以将所选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>