如何使用Play Framework中的Enum字段将请求参数转换为EnumType



我是Play框架的新手,无法使用Enum字段Value将POST请求主体参数转换为Enum类型。我将Enum Fruits定义为:

@AllArgsConstructor
public enum Fruits {
APPLE("apple"),
BANANA("banana"),
KIWI("kiwi"),
DRAGON_FRUIT("dragonFruit");
private final String fruitName;
private static final Map<String, Fruits> fruitsByFruitName; 
static {
fruitsByFruitName = new HashMap<>(); 
fruitsByFruitName.put("apple", APPLE);
fruitsByFruitName.put("banana", BANANA);
fruitsByFruitName.put("kiwi", KIWI);
fruitsByFruitName.put("dragonFruit", DRAGON_FRUIT);
}
public static Fruits fromFruitName(String fruitName) throws InvalidEnumException {
if(fruitsByFruitName.contains(fruitName)) return fruitsByFruitName.get(fruitName);
else throw new InvalidEnumException("message");
} 
}

我的模型类为:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class MyReqBody {
private Fruit favFruit;
}

我的请求正文由json组成,正文为:

{
"favFruit": "banana"
}

我正在尝试使用绑定参数

Form<MyReqBody> request = Form.form(MyReqBody.class);
request = request.bindFromRequest();

投标后我无法填充MyReqBodyfavFruit字段,它为空。如果我发送";BANANA";在请求体中而不是";香蕉";,即确切的枚举名称。我如何告诉play框架使用具有枚举字段fruitName而不是枚举名称的比较请求体数据,或者我如何告诉播放在竞标Fruits枚举类型时使用fromFruitName

尝试使用String#toUpperCase()方法

if(fruitsByFruitName.contains(fruitName.toUpperCase())) {
return fruitsByFruitName.get(fruitName.toUpperCase());
}