html5日期格式后台接收为null_html5日期后台非空处理【方案】
发布时间 - 2026-01-29 00:00:00 点击率:次根本原因是Spring Boot未自动解析yyyy-MM-dd字符串为LocalDate,需用@DateTimeFormat(pattern="yyyy-MM-dd")、String手动解析或全局配置spring.mvc.format.date。
HTML5 提交后后台接收为 null 的常见原因
根本问题不是前端没传,而是后端没正确解析。HTML5 的 固定以 yyyy-MM-dd 格式提交(例如 "2025-06-15"),但 Java Spring Boot 默认的 @RequestParam 或 @RequestBody 绑定无法自动将该字符串转成 LocalDate 或 Date,除非显式配置格式或类型转换器。
- Spring MVC 默认不注册
LocalDate的Converter,直接用String接收又容易忽略空字符串校验 - 前端未设
name属性,或表单用了GET但后端用@RequestBody,导致参数根本没进 controller -
浏览器在日期未选择时会提交空字符串
"",而非null;后端若用LocalDate接收且无默认值,就会因类型转换失败而跳过绑定,最终字段为null
Spring Boot 后端接收 的三种可靠写法
优先推荐明确、可控的方式,避免依赖全局配置带来的隐式行为:
- 用
@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date:适用于@RequestParam或@ModelAttribute场景,必须加注解,否则不生效 - 用
String dateStr接收再手动解析:最稳妥,可统一处理空值、非法格式,例如:if (StringUtils.hasText(dateStr)) {
date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
} - 在
application.properties中全局启用spring.mvc.format.date=yyyy-MM-dd:仅对java.time.LocalDate有效,但不解决空字符串问题,仍需配合@NotNull或逻辑判空
前端 必须配合的属性与校验
光靠后端补救不够,前端要减少无效提交:
- 必须设置
name属性,否则表单提交时该字段不会出现在请求参数中 - 建议加
required属性,防止用户跳过选择(此时浏览器会阻止提交并提示) - 不要依赖
value的初始值做“非空”判断——未选时 DOM 中value是空字符串,不是null,JS 检查要用input.value.trim() !== "" - 如果用 AJAX 提交,确保把
input.value当字符串拼入 FormData 或 JSON,别误转成 Date 对象再 toString(),否则格式可能变成"Fri Jun 15 2025...",后端无法识别
容易被忽略的关键点:空值 vs 非法格式 vs 时区
三者表现相似(都可能导致 null),但根源不同:
- 空值:用户没选,提交的是
date=(空字符串),Spring 绑定时若字段是LocalDate且无默认值,直接跳过赋值 → 字段保持null - 非法格式:比如用户用 JS 强行改了 input 的 value 为
"2025/06/15",后端解析失败抛DateTimeParseException,整个请求可能 400,或字段静默为null(取决于配置) - 时区无关:HTML5
date不含时间与时区,纯日期,无需考虑 UTC 转换,别画蛇添足调new Date().toISOString()
真正要盯住的,是空字符串的显式处理和格式注解的强制声明。其他方案看着省事,上线后反而更难定位为什么某次提交日期就丢了。
# java
# html
# js
# 前端
# json
# ajax
# html5
# 浏览器
# app
# 后端
# spring mvc
# 表单提交
# mvc
# spring
# spring boot
# String
# NULL
# date
# format
# 字符串
# 类型转换
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
公司门户网站制作流程,华为官网怎么做?
如何在万网自助建站中设置域名及备案?
如何用PHP快速搭建CMS系统?
如何在IIS7上新建站点并设置安全权限?
Laravel如何实现用户密码重置功能?(完整流程代码)
如何在景安服务器上快速搭建个人网站?
🚀拖拽式CMS建站能否实现高效与个性化并存?
lovemo网页版地址 lovemo官网手机登录
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
C++用Dijkstra(迪杰斯特拉)算法求最短路径
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
如何在腾讯云服务器快速搭建个人网站?
如何在Windows环境下新建FTP站点并设置权限?
Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件
如何在云指建站中生成FTP站点?
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
Laravel怎么使用Intervention Image库处理图片上传和缩放
佛山网站制作系统,佛山企业变更地址网上办理步骤?
如何在云主机快速搭建网站站点?
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
如何在阿里云通过域名搭建网站?
怎么用AI帮你设计一套个性化的手机App图标?
北京网站制作的公司有哪些,北京白云观官方网站?
浅述节点的创建及常见功能的实现
Laravel怎么调用外部API_Laravel Http Client客户端使用
在线制作视频的网站有哪些,电脑如何制作视频短片?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
EditPlus中的正则表达式 实战(1)
焦点电影公司作品,电影焦点结局是什么?
js实现点击每个li节点,都弹出其文本值及修改
如何快速搭建高效WAP手机网站吸引移动用户?
Laravel如何配置和使用缓存?(Redis代码示例)
网站建设整体流程解析,建站其实很容易!
Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】
Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧
Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】
Laravel如何处理文件下载请求?(Response示例)
Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】
Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试
Laravel如何使用withoutEvents方法临时禁用模型事件
jquery插件bootstrapValidator表单验证详解
如何在阿里云部署织梦网站?
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
Laravel如何集成Inertia.js与Vue/React?(安装配置)
中国移动官方网站首页入口 中国移动官网网页登录
如何安全更换建站之星模板并保留数据?


