Есть ли у Грааля аккуратный способ копирования доменных свойств из строки запроса URL?
-
21-09-2019 - |
Вопрос
Я знаю, что Grails имеет конструктор на основе карты для объектов домена, к которому вы можете передать параметры URL, и он применит соответствующие настройки поля к объекту, используя самоанализ, как это ...
myDomainInstance = new MyObject(params)
Мне было интересно, был ли эквивалентный метод приема параметров и применения их к существующему объекту и обновления значений так же, как конструктор карты должен работать, что -то вроде ...
myDomainInstance = params
или же
myDomainInstance = fromParams(params)
Я просто желаю заработать или такая вещь существует? Я могу кодировать это сам, но предпочел бы не быть, если это уже существует.
Спасибо
Решение
Адаптировано из Руководство пользователя Грааля:
obj = MyObject.get(1)
obj.properties = params
Ознакомьтесь с документацией для «Params» в разделе Controller для получения дополнительной информации.
Другие советы
Это действительно зависит от того, что вы пытаетесь сделать, но эквивалентный подход Используйте DataBinding.
def sc = new SaveCommand()
bindData(sc, params)
Это дает вам преимущество использования пользовательской привязки. Если скажем, ваш формат даты не по умолчанию, вы можете переопределить его через боб, как это:
public class CustomPropertyEditorRegistrar implements PropertyEditorRegistrar {
public void registerCustomEditors(PropertyEditorRegistry registry) {
registry.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("dd/MM/yyyy"), true));
}
}