Используйте @ XmlJavaTypeAdapter аннотацию, и вы можете маршалировать / демаршировать свои поля любым удобным для вас способом.
Не могу определить, является ли это наиболее простым способом.
И обратите внимание такжечто это может повредить совместимости с любым кодом, который попытается использовать ваш WSDL.Программисты для этого другого кода увидят xsd: string в качестве типа поля и, следовательно, должны будут выполнить форматирование и синтаксический анализ вручную (точно так же, как вы, да), представляя, кто знает, сколько ошибок.Поэтому, пожалуйста, подумайте, действительно ли xsd: date - плохой выбор.
Украдено из здесь :
@XmlJavaTypeAdapter(value=DateAdapter.class, type=Date.class)
Date someDate;
...
public class DateAdapter extends XmlAdapter<String, Date> {
// the desired format
private String pattern = "MM/dd/yyyy";
public String marshal(Date date) throws Exception {
return new SimpleDateFormat(pattern).format(date);
}
public Date unmarshal(String dateString) throws Exception {
return new SimpleDateFormat(pattern).parse(dateString);
}
}
ОБНОВЛЕНИЕ : как было упомянуто@Blaise Doughan, гораздо более коротким способом является аннотировать дату с помощью
@XmlSchemaType("date")
Date someDate;
Несмотря на то, что до сих пор неясно, почему информация о часовом поясе не генерируется для этой даты, этот код работает на практике и требует гораздо меньшего количества операций ввода.