我在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部分。
如何解决此问题?
答案 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">