Привязка даты Grails от параметрических усилителей в контроллере

Почему настолько трудно извлечь дату из представления через параметрические усилители в контроллере чаш Грааля?

Я не хочу извлекать дату вручную как это:

instance.dateX = parseDate(params["dateX_value"])//parseDate is from my helper class

Я просто хочу использовать instance.properties = params.

В модели тип java.util.Date и в параметрических усилителях вся информация: [dateX_month: 'value', dateX_day: 'value', ...]

Я искал в сети и ничего не нашел на этом. Я надеялся, что Grails 1.3.0 мог помочь, но тем не менее то же самое.

Я не могу и не полагать, что извлечение даты вручную необходимо!

40
задан Rob Hruska 31 May 2011 в 16:24
поделиться

2 ответа

Grails Version> = 2.3

Параметр в Config.groovy определяет форматы даты, которые будут использоваться для всего приложения при привязке параметров к Date

grails.databinding.dateFormats = [
        'MMddyyyy', 'yyyy-MM-dd HH:mm:ss.S', "yyyy-MM-dd'T'hh:mm:ss'Z'"
]

Форматы, указанные в grails.databinding.dateFormats , будут предприняты в том порядке, в котором они включены в список.

Вы можете переопределить эти общесистемные форматы для отдельного объекта команды, используя @BindingFormat

import org.grails.databinding.BindingFormat

class Person { 
    @BindingFormat('MMddyyyy') 
    Date birthDate 
}

Grails Version <2.3

Я не могу и не буду полагать, что извлечение даты вручную необходимо!

Ваше упорство вознаграждено, назначить дату можно было напрямую задолго до Grails 1.3. Шаги:

(1) Создайте класс, который регистрирует редактор для вашего формата даты

import org.springframework.beans.PropertyEditorRegistrar
import org.springframework.beans.PropertyEditorRegistry
import org.springframework.beans.propertyeditors.CustomDateEditor
import java.text.SimpleDateFormat

public class CustomDateEditorRegistrar implements PropertyEditorRegistrar {

    public void registerCustomEditors(PropertyEditorRegistry registry) {

        String dateFormat = 'yyyy/MM/dd'
        registry.registerCustomEditor(Date, new CustomDateEditor(new SimpleDateFormat(dateFormat), true))
    }
}

(2) Сообщите Grails об этом редакторе даты, зарегистрировав следующий bean-компонент в grails -app / conf / spring / resources.groovy

beans = {
    customPropertyEditorRegistrar(CustomDateEditorRegistrar)
}

(3) Теперь, когда вы отправляете дату в параметре с именем foo в формате yyyy / MM / dd он будет автоматически привязан к свойству с именем foo , используя либо:

myDomainObject.properties = params

, либо

new MyDomainClass(params)
85
ответ дан 27 November 2019 в 01:11
поделиться

Пробовали ли вы использовать какой-либо из подключаемых модулей выбора даты Grails?

У меня был хороший опыт работы с подключаемым модулем календаря .

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

Например.

new DomainObject(params)

Вы также можете проанализировать строку даты "гггг / ММ / дд" следующим образом ...

new Date().parse("yyyy/MM/dd", "2010/03/18")
2
ответ дан 27 November 2019 в 01:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: