Как мне манипулировать датами в SpEL? - PullRequest
1 голос
/ 23 марта 2012

Как я могу манипулировать датами на языке Spring Expression?

<si:service-activator id="entryReader" expression="@blogEntryReader.getEntriesBetweenDates(payload.startDate, payload.startDate **PLUS 30 DAYS**)" input-channel="blogEntryReaderChannel"/>

Ответы [ 3 ]

3 голосов
/ 23 марта 2012

К сожалению, у 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)

Вы также можете использоватьесли вам не нужен вспомогательный класс.

1 голос
/ 10 июня 2014
T(org.apache.commons.lang.time.DateUtils).addDays(payload.startDate, 30)
0 голосов
/ 11 августа 2016

Если у вас есть доступ, более простой способ сделать это - написать нужные вам функции манипуляции датами и вставить их в SpelEvaluationContext:

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html#expressions-ref-functions

...