繁体   English   中英

如何转换@RequestParam地图 <String, String> 到自定义Map &lt;&gt;

[英]How to convert a @RequestParam Map<String, String> to a custom a Map<>

我正在尝试将@RequestParam Map<String, String>为我自己的Map<Enum, Long> ,我想知道如何去做。 我的服务需要获取转换后的Map<Enum, Long> ,我真的很想避免一个封装了我的枚举和ID的对象。

这是必需的,因为使用api/suff?FOO=1234&BAR=4567调用了终结点,并且此服务仅强制使用其中之一。

我已经尝试使用Converter<String, Map<Enum, Long>>创建自己的org.springframework.core.convert.converter.Converter 但是我无法转换它。

目前,我的端点如下所示:

@GetMapping
public ResponseEntity<Stuff> getByIds(@RequestParam @NotEmpty @Size(max = 2) Map<Enum, Long> map) {
    return new ResponseEntity<>(someService.getStuff(map), HttpStatus.OK);
}

有没有一种方法可以实现这种情况的自定义转换器,还是我必须遵循其他方法?

我投票支持一种替代方法来实现这一目标-

@GetMapping
public ResponseEntity<Stuff> getByIds(@RequestParam(value="FOO", required = false) 
    String fooValue, @RequestParam(value="BAR", required = false) String barValue) {

    //Assuming you already have an ExceptionAdvice/handler for issues with the values passed
    Map<Enum, Long> map = new HashMap<Enum, Long>();
    if(null != fooValue){
        map.put("FOO", Enum.parse(fooValue));
    }
    if(null != barValue){
        map.put("BAR", Long.valueOf(barValue));
    }
    return new ResponseEntity<>(someService.getStuff(map), HttpStatus.OK);
}

我不确定这是否简化了您的API-我希望这是一个判断调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM