spring boot 接口中,我传入一个int值,请求参数中是枚举类型的值区接收,怎么实现
时间: 2024-12-10 20:35:55 浏览: 40
Spring Boot 中,如果你想让接口接受枚举类型的参数,并允许传入整数值(实际上是枚举的内部表示),可以使用`@ModelAttribute`注解配合`EnumTypeResolver`来处理。这里是一个简单的例子:
1. 首先,创建一个枚举类:
```java
public enum MyEnum {
VALUE1(1),
VALUE2(2),
// 添加其他枚举值
VALUE_DEFAULT; // 默认值,用于映射非枚举整数
private final int value;
MyEnum(int value) {
this.value = value;
}
public static MyEnum fromInt(int intValue) {
for (MyEnum e : values()) {
if (e.getValue() == intValue) {
return e;
}
}
return VALUE_DEFAULT; // 如果输入的不是有效枚举值,返回默认值
}
public int getValue() {
return value;
}
}
```
2. 在接口方法上添加`@ModelAttribute`注解,指定参数类型为枚举类:
```java
@PostMapping("/myEndpoint")
public ResponseEntity<?> handleRequest(@ModelAttribute MyEnum myEnumParam) {
// 在这里处理接收到的枚举值
}
```
3. 当前端发送POST请求时,你可以将整数作为查询参数、JSON body的一部分,或者使用`form-data`的方式提交。Spring会自动通过`fromInt`方法转换成枚举类型。
如果你在请求中传递了整数值,但该值不是枚举的合法成员,则会默认转化为`VALUE_DEFAULT`。
阅读全文