如何阻止 String 在 Payara 中被解释为 DateTime?

How to stop the String from being interpreted as DateTime in Payara?

大家好!我有一个 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 服务器中工作,我得到 approvedDate 作为 dd.MM.yyyy 格式的字符串。然而,在 Payara 中,字符串被格式化为 yyyy-MM-ddTHH:mm:ssZ[Timezone]。我如何调整它以使字符串不会得到 "interpreted" 作为 DateTime?谢谢!

据我所知,您有一个私有字段 approvedDate,因此进程 marshal/unmarshal 通过 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);
    }
}