java - RestEasy 忽略枚举的 @JsonCreator 方法

我在使 RestEasy (3.0.10.Final) 将路径参数解析为枚举值时遇到问题。

有了枚举定义...

package com.stines;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonValue;

public enum MyNumber {
    One("number-one"), Two("number-two");

    @JsonIgnore private final String text;

    @JsonIgnore
    private MyNumber(final String text) {
        this.text = text;
    }

    @JsonValue
    public String getText() {
        return text;
    }

    @JsonCreator
    public static MyNumber byText(final String text) {
        for (final MyNumber value : MyNumber.values()) {
            if (value.getText().equals(text)) return value;
        }
        throw new IllegalArgumentException("Unknown number");
    }
}

...和端点...

@PUT
@Path("{number}")
void putNumber(
        @PathParam("number") MyNumber number
);

...我希望能够点击 PUT http://my-server/number-one

虽然我看到了以下内容:

Caused by: java.lang.IllegalArgumentException: No enum constant com.stines.MyNumber.number-one
    at java.lang.Enum.valueOf(Enum.java:238)
    at com.stines.MyNumber.valueOf(MyNumber.java:7)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at org.jboss.resteasy.core.StringParameterInjector.extractValue(StringParameterInjector.java:343)
    ... 34 more

我在这里错过了什么??非常感谢。

最佳答案

问题似乎与 Jackson 无关,因为您映射的是路径参数,而不是有效负载对象。

根据 the JAX-RS documentation您可以使用静态方法 valueOffromString 从字符串构造参数实例。我建议您将 byText 方法重命名为 fromString,看看会发生什么。

https://stackoverflow.com/questions/29594642/

相关文章:

php - 使用 php mail() 函数发送链接

php - 无法以正确的格式导出 xlsx 或 xls 所有数据都是困惑的

c - 为什么我在使用 fgets 时必须输入 EOF 3 次?

html - 删除特定的 td 边框?

ruby-on-rails - 如何在日期选择中降序显示年份?

scala - Apache Spark 1.3 dataframe SaveAsTable 数据库

php - 如何在codeigniter中使用回调函数

mongodb - 将mongo集合导入现有集合而不覆盖它

wpf - 如何将打印到标签上的文本设为粗体、斜体或下划线?

php - fatal error : Call to undefined function mb_