1

Spring Expression言語で日付操作を行うにはどうすればよいですか?

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

3 に答える 3

3

残念ながら、java.util.Calendar にはビルダー API がないため、SpEL に対応していません。1つの解決策は、ヘルパークラスを使用することです...

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)

ヘルパー クラスが必要ない場合は、 <int-groovy:script/> を使用することもできます。

于 2012-03-23T00:41:02.013 に答える
1
T(org.apache.commons.lang.time.DateUtils).addDays(payload.startDate, 30)
于 2014-06-10T13:13:09.407 に答える
0

アクセスできる場合は、必要な日付操作関数を記述し、それらを SpelEvaluationContext に注入することにより、これを行うより適切な方法になります。

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

于 2016-08-11T14:26:32.930 に答える