我有以下控制器:
public interface SaveController {
@PostMapping(value = "/save")
@ResponseStatus(code = HttpStatus.CREATED)
void save(@RequestBody @Valid SaveRequest saveRequest);
}
``` `SaveRequest` 对应于:
public class SaveRequest {
@NotNull
private SaveType type;
private String name;
}
以及 `SaveType` :
public enum SaveType {
DAILY, WEEKLY, MONTHLY;
}
控制器未接收到 `enum` 它本身,不过是个 Camel 箱 `String` . 我需要把它转换成 `String` 进入相应的 `enum` . 例如: `daily` 应该变成 `DAILY` . `weekly` 应该变成 `WEEKLY` . `monthly` 应该变成 `MONTHLY` .
还有别的吗 `String` 应该变成 `null` .
我试过用Spring `Converter` 类,当 `enum` 是在一个物体里面(至少我不知道如何在这种时候使它工作)。
我真的不知道还能尝试什么
2条答案
按热度按时间jgwigjjp1#
https://www.baeldung.com/jackson-serialize-enums 这个网站可能会给你很多选择。
最好的可能是这样的:
p8ekf7hl2#
您需要的是为enum提供带有自定义验证类的自定义注解。
javax.validation
库没有对枚举的内置支持。验证类
带有验证消息的验证注解接口
使用
这是一种方法。本文还提到了更多的方法。