Как мне манипулировать датами в SpEL?
Как я могу манипулировать датами на языке Spring Expression?
<si:service-activator id="entryReader" expression="@blogEntryReader.getEntriesBetweenDates(payload.startDate, payload.startDate **PLUS 30 DAYS**)" input-channel="blogEntryReaderChannel"/>
3 ответа
Решение
К сожалению, у java.util.Calendar нет API-интерфейса разработчика, поэтому он не является SpEL-дружественным. Одним из решений будет использование вспомогательного класса...
public static class CalendarManip {
public static Date addDays(Date date, int days) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DAY_OF_YEAR, 30);
return cal.getTime();
}
}
Затем в SpEL...
T(foo.CalendarManip).addDays(payload.startDate, 30)
Вы также можете использовать
T(org.apache.commons.lang.time.DateUtils).addDays(payload.startDate, 30)
Если у вас есть доступ к более аккуратному способу сделать это, написав нужные вам функции манипулирования датами и вставив их в SpelEvaluationContext:
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html