【问题标题】:How to restrict REST parameters to enum in spring-mvc? [duplicate]如何将 REST 参数限制为 spring-mvc 中的枚举? [复制]
【发布时间】:2015-03-22 13:49:41
【问题描述】:

我想通过 enum 来限制 REST 服务参数,如下所示:

public class enum {
    TEST;
}

@RestController
public class MyRest {
   @RequestMapping(method = RequestMethod.GET)
   public Object content(@RequestParam value="list" required=false) List<MyEnum> list) {
    Sysout(list);
  }
}

如果我致电:/app?list=TEST,效果会很好。

但是在调用/app?list=test(小写字母)时,其余服务没有响应。

如何为要接受的枚举类型提供自定义值?

【问题讨论】:

  • 解决方案是将以下内容添加到其余服务控制器中:@InitBinder protected void initBinder(WebDataBinder binder) { binder.registerCustomEditor(MyEnum.class, new EnumConverter&lt;MyEnum&gt;(MyEnum.class));}

标签: java spring rest spring-mvc


【解决方案1】:

我不确定您的操作方式。但我们可以用另一种方式做到这一点。

public class enum {
  TEST(1, "TEST");
}

@RestController
public class MyRest {
  @RequestMapping(method = RequestMethod.GET)
  public Object content(@RequestParam value="list" required=false) List<Integer> list) {
    for(Integer int: list)
    sysout(enum.get(int));
  }
}

您可以传入整数列表并将枚举映射到这些 int 值。传递整数列表对我来说似乎更干净。

谢谢!!

【讨论】:

  • 好吧,但我希望我的客户明确地传输字符串值,所以整数不是选项。
  • 如果要从传入的字符串值转换枚举,请使用:MyEnum.valueOf(inputString.toUpperCase());
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-28
  • 1970-01-01
  • 2019-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多