Spring Expression言語で日付操作を行うにはどうすればよいですか?
<si:service-activator id="entryReader" expression="@blogEntryReader.getEntriesBetweenDates(payload.startDate, payload.startDate **PLUS 30 DAYS**)" input-channel="blogEntryReaderChannel"/>
Spring Expression言語で日付操作を行うにはどうすればよいですか?
<si:service-activator id="entryReader" expression="@blogEntryReader.getEntriesBetweenDates(payload.startDate, payload.startDate **PLUS 30 DAYS**)" input-channel="blogEntryReaderChannel"/>
残念ながら、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/> を使用することもできます。
T(org.apache.commons.lang.time.DateUtils).addDays(payload.startDate, 30)
アクセスできる場合は、必要な日付操作関数を記述し、それらを SpelEvaluationContext に注入することにより、これを行うより適切な方法になります。