Есть ли у Grails аккуратный способ копирования свойств домена из строки запроса URL? - PullRequest
2 голосов
/ 20 января 2010

Я знаю, что у Grails есть конструктор на основе карты для доменных объектов, к которому вы можете передать параметры URL-адреса, и он будет применять соответствующие параметры поля к объекту с помощью самоанализа, как этот ...

myDomainInstance = new MyObject(params)

Мне было интересно, существует ли эквивалентный метод получения параметров и их применения к существующему объекту и обновления значений так же, как должен работать конструктор карты, что-то вроде ...

myDomainInstance = params

или

myDomainInstance = fromParams(params)

Я просто желаю думать или такая вещь существует? Я могу кодировать это сам, но не хотел бы, если бы он уже существовал.

Спасибо

Ответы [ 2 ]

7 голосов
/ 20 января 2010

Адаптировано из руководства пользователя grails :

obj = MyObject.get(1)
obj.properties = params

Для получения дополнительной информации ознакомьтесь с документацией по 'params' в разделе контроллера.

2 голосов
/ 21 января 2010

Это действительно зависит от того, что вы пытаетесь сделать, но эквивалентный подход использует привязку данных.

def sc = new SaveCommand()
bindData(sc, params)

Это дает вам преимущество использования пользовательского связывания. Если, скажем, ваш формат даты не является форматом по умолчанию, вы можете переопределить его с помощью bean-компонента следующим образом:

public class CustomPropertyEditorRegistrar implements PropertyEditorRegistrar {
  public void registerCustomEditors(PropertyEditorRegistry registry) {
      registry.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("dd/MM/yyyy"), true));
  }
}
...