Grails datepicker

#grails

#grails

Вопрос:

Используя элемент управления grails datepicker, есть ли способ сохранить точность во времени, но показывать пользователю только с точностью до дня? Пользователя интересует только этот день, но мне нужно добавить время суток, когда запись была сохранена в базе данных.

Ответ №1:

Из того, что я знаю, datepicker не сохраняет точность и устанавливает некоторые значения по умолчанию для полей, которые пропущены.

Если вам нужно сохранить, чтобы сохранялась запись времени суток, вы можете использовать dateCreated lastUpdated которое будет автоматически установлено при сохранении объекта в первый раз ( dateCreated ) или при каждом изменении объекта ( lastUpdated ).

 class Message {

    ...

    Date dateCreated
    Date lastUpdated

} 
  

Комментарии:

1. Спасибо, я пошел по этому пути, хотя я бы предпочел упорядочивать только по одному полю вместо двух. Было бы неплохо скрыть поля времени и установить в datepicker значения времени по умолчанию.

2. @Bill — вы можете изменять значения времени в вашем контроллере также при отправке вашей формы.

Ответ №2:

Если вы добавите атрибут precision='day' к тегу, поля времени отображаться не будут, например

 <g:datePicker name="myDate" value="${new Date()}" precision="day"/>
  

Затем вы можете установить для полей времени в контроллере значения по умолчанию при отправке данных.

Ответ №3:

Для того, чтобы просто сохранять точность до сегодняшнего дня в базе данных, вы можете использовать сопоставление. Предполагая, что вашей базой данных является MSSQL (https://msdn.microsoft.com/en-us/library/ms186724.aspx?f=255amp;MSPPError=-2147217396)

 class Message {

...

Date dateCreated
Date lastUpdated

static mapping = {
    dateCreated sqlType:'date'
    lastUpated sqlType:'date'
}


} 
  

Ссылка:http://docs.grails.org/latest/ref/Database Mapping/column.html

В ваших GSP вы можете использовать

 <g:datePicker name="dateCreated" value="${new Date()}" precision="day" />
  

Ссылка:http://docs.grails.org/latest/ref/Tags/datePicker.html