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