当前位置: 首页 > news >正文

spring-webmvc @InitBinder 典型用法

典型用法

注册自定义类型转换器(PropertyEditor / Converter)

用于将请求参数中的字符串转换为特定类型,比如 Date、LocalDate 等。

@InitBinder
public void initDateBinder(WebDataBinder binder) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");binder.registerCustomEditor(Date.class, new CustomDateEditor(sdf, false));
}

设置字段白名单(防止字段注入攻击)

有些字段是敏感字段,你不希望用户通过请求随意修改,比如 id、role、isAdmin 等。

@InitBinder
public void initFieldWhitelist(WebDataBinder binder) {binder.setAllowedFields("name", "email", "birthDate"); // 只允许这些字段被绑定
}

如果用户传了 id=123,Spring 将忽略这个字段,不会赋值给对象。

添加验证器(Validator)

结合 Validator 接口,可以对绑定后的对象进行业务规则校验。

@InitBinder
public void initValidator(WebDataBinder binder) {binder.addValidators(new UserValidator());
}

然后在控制器方法中使用 @Valid 启动验证:

@PostMapping("/users")
public String createUser(@Valid User user, BindingResult result) {if (result.hasErrors()) {return "error";}return "success";
}

多个 @InitBinder 方法(可按名称绑定)

你可以写多个 @InitBinder 方法,并指定它们只作用于某个类或字段名。

@InitBinder("user")
public void initUserBinder(WebDataBinder binder) {binder.setAllowedFields("name", "email");
}@InitBinder("product")
public void initProductBinder(WebDataBinder binder) {binder.setAllowedFields("name", "price");
}

与 @ControllerAdvice 结合实现全局配置

如果你希望所有控制器都共享某些绑定规则(如统一日期格式),可以使用 @ControllerAdvice + @InitBinder:

@ControllerAdvice
public class GlobalBindingConfig {@InitBinderpublic void globalInitBinder(WebDataBinder binder) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");binder.registerCustomEditor(Date.class, new CustomDateEditor(sdf, true));}
}

这样所有控制器都会默认支持这种日期格式。

相关文章:

  • 《前端面试题:数组操作》
  • PID控制电机
  • springboot入门之路(二)
  • 技术赋能教师专业发展:从理论到实践的深度剖析
  • createInnerAudioContext播放不完整?
  • 榕壹云外卖跑腿系统:基于Spring Boot的开源生活服务平台技术解析
  • STM32 GPIO 寄存器开发
  • OCCT基础类库介绍:Modeling Algorithm - Topological Tools
  • 今天我想清楚了
  • 无需公网IP:Termux+手机+内网穿透实现Minecraft远程多人联机
  • 基于大数据技术的在UGC数据分析与路线推荐的研究
  • ArcGIS中利用泰森多边形法分析站点与流域占比
  • VTK知识学习(54)- 交互与Widget(五)
  • ES 索引加载 vs BulkLoad
  • function ‘as_cholmod_sparse‘ not provided by package ‘Matrix‘
  • FreeCAD创作参数化凹形和水波纹式雨水箅子
  • 意法STM32F103C8T6 单片机ARM Cortex-M3 国民MCU 电机控制到物联网专用
  • Windows系统提示“mfc140u.dll丢失”?详细修复指南,一键恢复程序运行!
  • 智能制造——解读 51页制造业数据治理主数据管理系统建设方案【附全文阅读】
  • 从零Gazebo中实现Cartographer算法建图(新目录)
  • 网站右侧悬浮代码/谷歌广告代运营
  • 怎样做网站手机客户端/电脑全自动挂机赚钱
  • 城建公司建设网站基础资料/快速排名精灵
  • 企业系统管理软件/seo网站推广是什么意思
  • 武汉网站seo哪家公司好/电商怎么推广自己的产品
  • 局政府网站建设管理制度/关键词优化推广