Я экспериментирую с обновлением моего приложения Grails 3 до Grails 4. В обоих случаях я использую его с Java 8 и базой данных Oracle. Я вижу различия в том, как обрабатываются даты, и пытался выяснить, что изменилось в отношении дат, но ничего не нашел (в примечаниях к выпуску и т. Д. c) по этому поводу. Есть ли какие-нибудь заметки в блоге / выпуске, на которые кто-то может указать мне по этому поводу? Или объясните разницу ниже?
Два примера
Я использую функцию, подобную этой, чтобы получить дату из Oracle
Date currentDateTime; // NOte this is a java.util.date
{$Sql.TIMESTAMP = call GetcurrentDateTime} {
returnedDateTime -> currentDateTime = returnedDateTime;
}
В Grails 3 returnDateTime будет всегда ведите себя как java .util.Date. Я знаю, что возвращаемым параметром в вызове функции является Sql .TIMESTAMP, но он позволил бы мне присвоить его переменной Date, а затем вести себя как Date. Но в Grails 4 он ведет себя как java. sql .Timestamp, даже если он объявлен как переменная Date.
Другой пример: в моих представлениях у меня будет средство выбора даты, которое может выглядеть следующим образом
<div data-role="controlgroup" data-mini="true" data-type="horizontal" >
<g:datePicker name="reportingPeriod" precision="month"
value="${reportingPeriod}"
default="none" noSelection="['':'']"
/>
</div>
В Grails 3 я могу отобразить значение, выполнив следующее:
log.info("params.reportingPeriod: " + params.reportingPeriod);
Будет показан результат, который выглядит следующим образом params.reportingPeriod
: Sun Dec 01 00:00:00 UTC 2019
Я также могу присвоить
params.reportingPeriod
непосредственно переменной java.util.Date
Но в Grails 4 контроллер вместо этого показывает это
params.reportingPeriod: date.struct
, и он не назначается напрямую переменной Date.