Java 8 如何将Java8可选与Moxy和Jersey一起使用
是否可以将Jersey与Moxy一起用于Json和Java8选项Java 8 如何将Java8可选与Moxy和Jersey一起使用,java-8,jersey,moxy,Java 8,Jersey,Moxy,是否可以将Jersey与Moxy一起用于Json和Java8选项 如何配置它?您可以声明以下类: public class OptionalAdapter<T> extends XmlAdapter<T, Optional<T>> { @Override public Optional<T> unmarshal(T value) throws Exception { return Optional.ofNullab
如何配置它?您可以声明以下类:
public class OptionalAdapter<T> extends XmlAdapter<T, Optional<T>> {
@Override
public Optional<T> unmarshal(T value) throws Exception {
return Optional.ofNullable(value);
}
@Override
public T marshal(Optional<T> value) throws Exception {
return value.orElse(null);
}
}
但这里有一些缺点:
@xmlement(type=Integer.class)
以告知解析器类型正在使用,否则null
值将传递给适配器的unmarshal
方法java.util.Date
类的自定义适配器。要解决这个问题,您需要创建类似于类OptionalDateAdapter扩展XmlAdapter
的适配器可选
,有关详细信息,请参阅
考虑到以上所有因素,我建议只使用可选作为POJO的返回类型:
@XmlRootElement
public class SampleRequest {
@XmlElement
private Integer id;
public Optional<Integer> getId() {
return Optional.ofNullable(id);
}
public void setId(Integer id) {
this.id = id;
}
}
@XmlRootElement
公开课{
@XmlElement
私有整数id;
公共可选getId(){
返回可选的可空值(id);
}
公共无效集合id(整数id){
this.id=id;
}
}
AFAIK您需要一个自定义适配器来处理这个问题。是否没有作为maven依赖项的插入式jar?我很确定我不是第一个遇到这个问题的人。我还想问一下如何为一个可选的、通用的。。。。如果这是解决方案的一部分。
@XmlAccessorType(XmlAccessType.FIELD)
@XmlJavaTypeAdapters({
@XmlJavaTypeAdapter(type = Optional.class, value = OptionalAdapter.class)
})
@XmlRootElement
public class SampleRequest {
@XmlElement
private Integer id;
public Optional<Integer> getId() {
return Optional.ofNullable(id);
}
public void setId(Integer id) {
this.id = id;
}
}