Почему настолько трудно извлечь дату из представления через параметрические усилители в контроллере чаш Грааля?
Я не хочу извлекать дату вручную как это:
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 мог помочь, но тем не менее то же самое.
Я не могу и не полагать, что извлечение даты вручную необходимо!
Параметр в 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 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)
Пробовали ли вы использовать какой-либо из подключаемых модулей выбора даты Grails?
У меня был хороший опыт работы с подключаемым модулем календаря .
(При использовании плагина календаря) Когда вы отправляете запрос выбора даты, вы можете автоматически привязать параметр запроса к объекту домена, который вы хотите заполнить с запросом.
Например.
new DomainObject(params)
Вы также можете проанализировать строку даты "гггг / ММ / дд" следующим образом ...
new Date().parse("yyyy/MM/dd", "2010/03/18")