栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

jaxrs找不到我的joda.money类型的自定义(反)序列化器

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jaxrs找不到我的joda.money类型的自定义(反)序列化器

我看到您

ObjectMapper
JsonProvider
构造函数中创建但从未使用过。您可能应该
setMapper(mapper);
在构造函数的最后使用JsonProvider。

但是我认为这不会解决您的问题。我认为问题在于jaxrs仅了解简单的数据类型,如果您要使用自定义类,则必须为基于String的字符串实现某种形式的String编组

@*Param

从您的stacktrace中,我看到您使用

jboss
,所以这可能会有所帮助?https://docs.jboss.org/resteasy/docs/3.0.12.Final/userguide/html/StringConverter.html

如果您有一个valueOf()或此字符串构造函数不存在或不适合HTTP请求的类,该怎么办?JAX-RS
2.0具有javax.ws.rs.ext.ParamConverterProvider可以在这种情况下提供帮助。有关更多详细信息,请参见javadoc。

https://docs.oracle.com/javaee/7/api/javax/ws/rs/ext/ParamConverterProvider.html

这样的事情可能应该起作用:

@Providerpublic class MoneyConverterProvider  implements ParamConverterProvider {    private final MoneyConverter converter = new MoneyConverter();    @Override    public <T> ParamConverter<T> getConverter(Class<T> rawType, Type genericType, Annotation[] annotations) {        if (!rawType.equals(Money.class)) return null;        return (ParamConverter<T>) converter;     }    public class MoneyConverter implements ParamConverter<Money> {        public Money fromString(String value) { if (value == null ||value.isEmpty()) return null; // change this for production return Money.of(CurrencyUnit.EUR, Double.parseDouble(value));        }        public String toString(Money value) { if (value == null) return ""; return value.getAmount().toString(); // change this for production        }    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/446898.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号