Class.java.LocalDateTime не является общедоступным или не позволяет создавать экземпляры

У меня есть этот 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

Любое предложение?

Заранее спасибо.


person Daniel    schedule 04.12.2018    source источник


Ответы (1)


Может быть, вы можете попробовать с адаптером. Как это:

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" для информации, но, очевидно, вы можете изменить шаблон в соответствии со своими потребностями.

person Lorelorelore    schedule 04.12.2018
comment
Большое спасибо, я пытался, но это не работает. Я добавил интерфейс в код, написанный в моем вопросе, если он может вам помочь. Есть ли какие-либо другие указания, которые я могу предоставить вам? - person Daniel; 04.12.2018
comment
Да, я тоже пытался обойти DTO, вставив переменную LocalDateTime с ее геттерами и сеттерами прямо в класс testRequest, но результат не меняется. - person Daniel; 04.12.2018
comment
Попробуйте также добавить @XmlRootElement в свой класс dateDto. - person Lorelorelore; 04.12.2018