spring-boot - 带有参数的thymeleaf 3表单操作URL和get方法不起作用
问题描述
我在 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 部分丢失。
如何解决这个问题?
解决方案
问题是你有一个动作@{/props/r(pg=3)}
——它转化为/props/r?pg=3
你的形式也是方法get
。如果您在表单的动作和正文中都有参数(并使用method="get"
),浏览器将不会组合它们。相反,动作的参数被移除并替换为表单主体中的参数。
这就是为什么?pg=3
被删除并替换为复选框参数的原因。要么post
改用,要么pg
作为隐藏的表单元素包含在内。
推荐阅读
- flutter - BoxPainter createBoxPainter([onChanged]) => 参数 onChanged 不能有 null 值
- c++ - 避免在 CMake 项目中克隆多个 git 子模块
- c# - 如何安装驱动程序作为 Winforms 应用程序的一部分
- java - 是否可以使用 Apache POI 在 Word 文档中的特定位置插入 HTML
- javascript - 在 React.js 中的两个组件之间创建链接
- python - 计算完整的两步过程的平均每日持续时间
- c++ - {fmt}:如何将包装的迭代器传递给格式化程序
- python - 在 GitHub 操作中找不到已安装的包
- python - 如何为类属性和实例属性定义不同的地址?
- c# - 生成带有颜色的随机按钮