1

我正在使用 XMLAdapter 来编组和解组日期。在我的解组器中,我想检查 REST 服务提供的格式。如果格式错误,那么我想抛出我自己的异常。然而,远征被吃光了,应用程序继续前进。我知道解决方案在于ValidationEventHandler但我无法弄清楚如何准确使用它。请帮助使用它的方法。我的 XMLAdapter 代码是这样的

public class DateFormatAdapter extends XmlAdapter<String, Date> {

@Override
public String marshal(Date arg0) throws Exception {

    return arg0.toString();
}

@Override
public Date unmarshal(String arg0) {
    DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
    df.setLenient(false);
    Date startDate = null;
    try {
        startDate = df.parse(arg0);
        df.format(startDate);

    } catch (ParseException e) {
        // throw custom exception from here
    }

    return startDate;
}

}

4

1 回答 1

1

确实如此!如果您在 XMLAdapter 的实现中抛出异常,它将被捕获并且服务继续。响应的状态不会设置为Status.INTERNAL_SERVER_ERROR或其他。Insted 数据未映射,因此响应不包含所需的数据。如果要影响响应代码,如果数据格式不匹配,则必须在数据实体本身内抛出异常。在您的情况下,您必须创建一个扩展 Date 的 CustomDate 类,然后从构造函数调用验证方法。此外,不考虑使用 apdapter 类进行数据验证,因此使用自定义日期类和可选验证代理的方法要方便得多。

于 2013-06-08T22:19:18.293 回答