
在 Thymeleaf 模板中,若需生成不可编辑的 PDF 表单复选框(如导出后禁止用户修改),应使用 disabled 属性而非 readonly——因为 HTML 规范中 readonly 对 无效。
在 thymeleaf 模板中,若需生成不可编辑的 pdf 表单复选框(如导出后禁止用户修改),应使用 `disabled` 属性而非 `readonly`——因为 html 规范中 `readonly` 对 `` 无效。
要使复选框在渲染后既保持预设状态(如已勾选),又完全禁止用户交互(包括点击、聚焦、键盘操作),必须使用 disabled 属性。该属性会:
- 禁用所有用户输入行为;
- 阻止表单提交时包含该字段值(这是关键副作用);
- 在视觉上通常呈现为灰化样式(可通过 CSS 自定义)。
✅ 正确写法(静态场景):
<input type="checkbox" id="randomId" checked disabled>
✅ Thymeleaf 动态绑定写法(推荐):
<input type="checkbox" id="randomId" th:checked="${true}" disabled>
或更语义化地使用 Thymeleaf 的属性简写:
<input type="checkbox" id="randomId" th:checked="${document.isApproved}" th:attr="disabled=${document.isApproved} ? 'disabled'">
⚠️ 注意事项:
- readonly="readonly" 对复选框无效,浏览器将忽略该属性;
- disabled 会导致该字段不会随表单提交(request.getParameter() 或 Spring MVC 绑定中获取不到),若需保留提交值,请改用 hidden 输入域配合只读 UI 元素(例如: + 可视化只读标签);
- 若目标是 PDF 导出(如使用 iText + Thymeleaf 渲染 HTML to PDF),确保所用 PDF 工具支持 disabled 属性的语义解析(多数现代工具会将其渲染为不可交互的只读复选框);
- 如需视觉上“只读但可提交”,建议采用 CSS + JavaScript 方案(如 pointer-events: none; opacity: 0.7;)并移除 disabled,同时禁用 JS 事件监听。
总结:在 Thymeleaf 表单中控制复选框可编辑性,disabled 是标准、可靠且跨浏览器兼容的解决方案;务必根据业务需求权衡是否允许该字段参与表单提交,并据此选择 disabled 或 hidden + 可视化层 的组合策略。










