Class.java.LocalDateTime非公开或不允许实例化

时间:2018-12-04 10:53:37

标签: java jaxb marshalling unmarshalling

我有这个DTO:

@XmlAccessorType(XmlAccessType.FIELD)
public class dateDTO{

    private LocalDateTime date;

    public LocalDateTime getDate() {
        return date;
    }

    public void setDate(LocalDateTime date) {
        this.date = date;
    }
}

我在此请求类中使用它:

@XmlAccessorType(XmlAccessType.FIELD)
public class testRequest {

    private dateDTO dDTO;

    public dateDTO getdDTO() {
        return dDTO;
    }

    public void setdDTO(dateDTO dDTO) {
        this.dDTO = dDTO;
    }
}

因此,我尝试实现一个使用请求类的网络方法:

  public testResponse testMethod(testRequest theRequest) {
        return null;
    }

testMethod具有以下接口:

@WebMethod(operationName="test")
@WebResult(name="testResponse")
testResponse testMethod(@WebParam(name = "testRequest") testRequest req);

但是我在设计时已经收到此消息:

Web method problem:Class.java.LocalDateTime non public or does not allow instantiation

有什么建议吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

也许您可以尝试使用适配器。像这样:

public class LocalDateTimeAdapter extends XmlAdapter<String, LocalDateTime> {


    public String marshal(LocalDateTime val) throws Exception {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
        return val.format(formatter);

    }


    public LocalDateTime unmarshal(String val) throws Exception {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
        return LocalDateTime.parse(val, formatter);

    }

}

然后声明要在DTO中使用它:

@XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
private LocalDateTime date;

在此示例中,我假设您使用模式"yyyy-MM-dd HH:mm"作为信息,但是显然您可以更改模式以适合您的需求。