Version de Grails >= 2.3
Un décor en Config.groovy
définit les formats de date qui seront utilisés dans l'ensemble de l'application lors de la liaison des paramètres à un fichier de type Date
grails.databinding.dateFormats = [
'MMddyyyy', 'yyyy-MM-dd HH:mm:ss.S', "yyyy-MM-dd'T'hh:mm:ss'Z'"]
Les formats spécifiés dans grails.databinding.dateFormats
seront tentés dans l'ordre dans lequel ils figurent sur la liste.
Vous pouvez remplacer ces formats d'application pour un objet de commande individuel à l'aide de la fonction @BindingFormat
import org.grails.databinding.BindingFormat
class Person {
@BindingFormat('MMddyyyy')
Date birthDate
}
Version de Grails < 2.3
je ne peux pas et ne veux pas croire qu'extraire la date à la main est nécessaire !
Votre obstination est récompensée, il est possible de lier directement une date depuis bien avant Grails 1.3. Les étapes sont les suivantes :
(1) Créer une classe qui enregistre un éditeur pour votre format de date
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) Faites connaître à Grails cet éditeur de date en enregistrant le bean suivant dans le fichier grails-app/conf/spring/resources.groovy
beans = {
customPropertyEditorRegistrar(CustomDateEditorRegistrar)
}
(3) Maintenant, lorsque vous envoyez une date dans un paramètre nommé foo
dans le format yyyy/MM/dd
il sera automatiquement lié à une propriété nommée foo
en utilisant l'un ou l'autre :
myDomainObject.properties = params
ou
new MyDomainClass(params)