Os Grails têm uma maneira legal de copiar propriedades de domínio de uma string de consulta de URL?
-
21-09-2019 - |
Pergunta
Eu sei que o Grails possui um construtor baseado em mapa para objetos de domínio, aos quais você pode passar os parâmetros de um URL e ele aplicará as configurações de campo apropriadas ao objeto usando a introspecção, como esta ...
myDomainInstance = new MyObject(params)
Eu queria saber se havia um método equivalente de pegar os parâmetros e aplicá -los a um objeto existente e atualizar valores da mesma maneira que o construtor de mapa deve funcionar, algo como ...
myDomainInstance = params
ou
myDomainInstance = fromParams(params)
Estou apenas pensando em pensar ou isso existe? Eu posso codificar -me, mas preferiria não se já existir.
Obrigado
Solução
Adaptado do Guia do usuário do Grails:
obj = MyObject.get(1)
obj.properties = params
Confira a documentação para 'parâmetros' na seção do controlador para obter mais informações.
Outras dicas
Realmente depende do que você está tentando fazer, mas uma abordagem equivalente a usar o banco de dados.
def sc = new SaveCommand()
bindData(sc, params)
Isso oferece o benefício de usar a ligação personalizada. Se, digamos, o formato da sua data não é o padrão, você pode redefini -lo através de um feijão como este:
public class CustomPropertyEditorRegistrar implements PropertyEditorRegistrar {
public void registerCustomEditors(PropertyEditorRegistry registry) {
registry.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("dd/MM/yyyy"), true));
}
}