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?

StackOverflow https://stackoverflow.com/questions/2103149

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

Était-ce utile?

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));
  }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top