Est-ce que Grails ont une belle façon de propriétés du domaine de la copie à partir d'une chaîne de requête d'URL?
-
21-09-2019 - |
Question
Je sais que Grails a un constructeur basé sur la carte pour les objets de domaine, auquel vous pouvez passer les params d'une URL et il applique les paramètres de champ appropriés à l'objet en utilisant l'introspection, comme ça ...
myDomainInstance = new MyObject(params)
Je me demandais s'il y avait une méthode équivalente de prendre les params et de les appliquer à un objet et des valeurs de mise à jour existante de la même manière que le constructeur de la carte doit travailler, quelque chose comme ...
myDomainInstance = params
ou
myDomainInstance = fromParams(params)
Suis-je seulement un vœu pieux ou existe une telle chose? Je peux coder moi-même, mais préfère ne pas si elle existe déjà.
Merci
La solution
Adapté du guide de grails utilisateur :
obj = MyObject.get(1)
obj.properties = params
Consultez la documentation de 'params' dans la section du contrôleur pour plus d'informations.
Autres conseils
Cela dépend vraiment de ce que vous essayez de faire, mais une utilisation d'approche équivalente databinding.
def sc = new SaveCommand()
bindData(sc, params)
Cela vous donne l'avantage d'utiliser la liaison personnalisée. Si Disons que votre format de date n'est pas celle par défaut, vous pouvez le redéfinir par un haricot comme ceci:
public class CustomPropertyEditorRegistrar implements PropertyEditorRegistrar {
public void registerCustomEditors(PropertyEditorRegistry registry) {
registry.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("dd/MM/yyyy"), true));
}
}