Spring Controller uri参数使用enum枚举类接收,自定义转换方式无视大小写

在Spring MVC中,当Controller层尝试使用枚举作为请求参数时,默认只能接受全大写枚举值。由于URI通常是不区分大小写的,这可能导致访问错误。为了解决这个问题,可以通过注册一个自定义的转换器,使得系统能够正确处理小写枚举值。例如,定义了一个枚举类型`Color`和对应的Controller方法,若尝试以小写形式访问,如`/有色/RED`,则会抛出错误。解决方法是在Controller类中添加一个自定义转换器,确保系统能够将小写枚举值转换为正确的枚举实例。
摘要由CSDN通过智能技术生成

Baeldung: 在 Spring 中使用枚举作为请求参数

controller层接收枚举参数的时候,使用的是org.springframework.core.convert.support.StringToEnumConverterFactory
最终调用的方法是java.lang.Enum#valueOf()
所以默认只能传递枚举的.name()(按照规范枚举类命名一般都是大写),但是uri一般是无视大小写的,所以需要注册一个能够转换小写枚举类的转换器

比如我们有一个枚举类

public enum ReturnMode {
   
    REDIRECT,
    JSON;
}

和一个controller

@GetMapping(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值