Spring Boot能够接受Enum作为请求参数

时间:2019-03-27 07:46:43

标签: java spring spring-boot enums

因此,我进入了这个正在开发中的新Spring Boot项目,在编写API的过程中,我在控制器中使用Enum来代替@RequestParam

我没有为此编写任何转换器。

稍后,我注意到在这个项目中,其他开发人员为此编写了自定义Converter。

因此,我决定在网上搜索有关此内容的信息,以及所有在Spring Boot中使用EnumController的转换器所使用的解决方案,没有像我这样的转换器,找不到任何示例。 / p>

下面是我如何编写此示例的一个示例,LoanStatusEnum

@RequestMapping(value = "/loans", method = RequestMethod.GET)
public ResponseEntity<?> getPatientsLoan(HttpServletRequest request,
            @RequestParam(value = "loanStatus", required = false) LoanStatus loanStatus) {}

这是Spring Boot现在接受Enums而不需要转换器的一项相对较新的功能,这就是为什么所有示例都使用转换器的原因,或者我将在功能方面遇到一些问题的原因,即使我没有使用用户转换器,目前正在为我工​​作吗?

1 个答案:

答案 0 :(得分:1)

从Spring 3.0开始,Spring支持从StringEnum的转换。有一个ConverterFactory可以为特定的枚举动态创建一个转换器。

在此之前,您需要编写自定义ConverterPropertyEditor来转换枚举。但基本上,对于当前版本,如果StringEnum匹配,则不需要。

如果要自定义枚举转换(通过某个内部值或其他值),则仍然需要自定义转换器。