Rem*_*emo 0 java enums spring jackson spring-boot
我有以下 api
@GetMapping(value = "/employees")
public List<Employee> getEmployees(
@RequestParam(value = "mode", required = false) final EmployeeMode mode) {
//calling service from here
}
Run Code Online (Sandbox Code Playgroud)
我将 EmployeeMode 枚举作为 requestParam。
public enum EmployeeMode {
REGULAR,
ALL,
TEMPROARY
}
Run Code Online (Sandbox Code Playgroud)
我想接受不区分大小写的请求。尝试使用@JsonAlias、@JsonCreator和objectMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_ENUMS, true);。spring.jackson.mapper.accept-case-insensitive-enums: true对我来说没有任何作用。
我正在使用 Spring Boot 2.5.5。
如何使用 requestParam 接受不区分大小写的请求?如果 requestParam 为空/null,则需要将默认枚举设置为 ALL。
小智 5
您可以通过实施转换器来处理它。
public class EmployeeModeConverter implements Converter<String, EmployeeMode> {
@Override
public EmployeeMode convert(String source) {
switch (source.toUpperCase()) {
case "REGULAR": return EmployeeMode.Regular;
case "TEMPROARY": return EmployeeMode.TEMPROARY;
default: return EmployeeMode.ALL;
}
}
}
@Configuration
public class Config extends WebMvcConfigurationSupport {
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addConverter(new EmployeeModeConverter());
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
969 次 |
| 最近记录: |