SpringMVC 接收枚举类型请求参数


写一个枚举类

public enum Gender {

    MALE("先生","mr"),
    FEMALE("女士","miss");

    String chinese;
    String abbr;

    Gender(String chinese,String abbr){
        this.chinese = chinese;
        this.abbr = abbr;
    }


    @JsonValue
    public String getJsonValue(){
            // 反序列化成json时, 枚举类取中文名
        return this.chinese;
    }
}

写一个接口

@Controller
@RequestMapping("/example")
public class ExampleController {

	@RequestMapping(value = "/enum",
            method = RequestMethod.GET,
            produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public ResponseEntity<Object> enumExample(@RequestParam("name") String name, 
                                              @RequestParam("gender") Gender gender) {
        HashMap<String, Object> map = new HashMap<String, Object>() {
            {
                put("name", name);
                put("gender", gender);
            }
        };
        return ResponseEntity.ok(map);
    }
    
}

配置 WebMvcConfigurationSupport

import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

@Configuration
public class MyWebMvcConfigurationSupport extends WebMvcConfigurationSupport {
	@Override
    public FormattingConversionService mvcConversionService() {
        FormattingConversionService f = super.mvcConversionService();
        f.addConverter(
                new Converter<String, Gender>() {
                    @Override
                    public Gender convert(String source) {
                        try {
                            return Gender.valueOf(source);
                        } catch(Exception e) {
                            return null;
                        }
                    }
                }
        );
        return f;
    }
}

这样就搞定了

测试:


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM