Как остановить интерпретацию String как DateTime в Payara? - PullRequest
0 голосов
/ 16 мая 2019

Добрый день всем! У меня есть метод get в состоянии покоя, и результат сохраняется в следующем виде:

@XmlRootElement(name = "FooDTO")
public class Foo {
    @XmlElement(nillable = true)
    private String approvedDate;
    private static final DateFormat DEFAULT_DATE_FORMAT = new SimpleDateFormat(
        "dd.MM.yyyy");


    public Date getApprovedDate() {
        try {
            return StringUtils.isBlank(approvedDate) ? null
                    : DEFAULT_DATE_FORMAT.parse(approvedDate);
        } catch (ParseException e) {
            e.printStackTrace();
            return null;
        }
    }

    public void setApprovedDate(Date approvedDate) {
        this.approvedDate = approvedDate == null ? "" : DEFAULT_DATE_FORMAT
                .format(approvedDate);
    }
}

Он работает на сервере Glassfish, и я получаю утвержденную дату в виде строки в формате dd.MM.yyyy. Однако в Payara строка форматируется в гггг-мм-ддтчч: мм: ссZ [часовой пояс]. Как настроить это так, чтобы строка не «интерпретировалась» как DateTime? Спасибо!

1 Ответ

1 голос
/ 16 мая 2019

Как я вижу, у вас есть поле approvedDate, которое является приватным, поэтому маршал / демаршал процесса обращается к этому полю через get / set, в этом случае он возвращается как тип Date в методе getApprovedDate.

Попытка:

@XmlRootElement(name = "FooDTO")
public class Foo {

    @XmlElement(nillable = true)
    private String approvedDate;
    private static final DateFormat DEFAULT_DATE_FORMAT = new SimpleDateFormat("dd.MM.yyyy");


    public String getApprovedDate() {
        return approvedDate;
    }

    public void setApprovedDate(Date approvedDate) {
        this.approvedDate = approvedDate == null ? "" : DEFAULT_DATE_FORMAT
                .format(approvedDate);
    }
}
...