百里香3带有参数的表单操作URL和get方法不起作用

时间:2018-11-27 19:10:06

标签: spring-boot thymeleaf

我在Spring Boot 2 Web应用程序中使用Thymeleaf 3。下面是表单代码:

<form data-th-action="@{/props/r(pg=3)}" method="get">
        <div class="form-check form-check-inline">
          <input class="form-check-input" type="checkbox"    name="pt" id="p1" value="pr">
          <label class="form-check-label" for="p1">P1</label>
        </div>
        <div class="form-check form-check-inline">
          <input class="form-check-input" type="checkbox"    name="pt" id="p2" value="pr2">
          <label class="form-check-label" for="p2">P2</label>
        </div>
        <button type="submit" class=" mb-4">Search</button>
      </form>

不幸的是,当我使用get方法获取表单时,它没有在提交的URL中追加?pg = 3,URL看起来像/ props / r?如果未选中任何复选框。如果选中此复选框,则URL类似于/ props / r?pt = p1

缺少pg = 3部分。

如何解决此问题?

2 个答案:

答案 0 :(得分:2)

问题是您有一个动作@{/props/r(pg=3)} -转换为/props/r?pg=3并且您的表单也是方法get。如果您在表单的动作和正文中都具有参数(并使用method="get"),浏览器将 组合它们。取而代之的是,删除操作的参数,并用表单主体中的参数替换。

这就是为什么?pg=3被删除并替换为复选框参数的原因。可以改用post,也可以包含pg作为隐藏的表单元素。

答案 1 :(得分:1)

不要将pg作为参数放在表单url中,而是考虑将其放在如下所示的隐藏字段中。

<input type="hidden" name="pg" value="3">