2009-12-21 20 views
6

Herhangi birisinin, bindData() 'nın işlevlerini, grails denetleyicilerinin dışında sağlamanın en iyi yolu hakkında bir fikri olup olmadığını merak ediyordum. Geçerli projemde, tarafından döndürülen nesneleri örneklemek için birkaç mükemmel sınıf oluşturdum. Bu sınıflarda xml'i ayrıştıran ve sınıfının bir nesne listesi döndüren statik bir yönteme sahibim. Bu sınıflardaki bindData yöntemini kullanarak anlamsız tüm tür dökümlerini atlamak istiyorum. ile ilgili herhangi bir öneriniz nasıl değerlendirilir?Denetleyicinin dışındaki bindData yöntemini kullanma

cevap

8

Hizmet sınıfında bindData kullanmak için benzer bir çözüm arıyordum. JT's blog'da bir çözüm buldum. Çözelti ithalat temelde:

import org.codehaus.groovy.grails.web.metaclass.BindDynamicMethod 

sonra kodu ekleyin:

def foo = new Foo() 
BindDynamicMethod bind = new BindDynamicMethod() 
def args = [ foo, params, [exclude:['name', 'mail']] ] // for example 
bind.invoke(foo, 'bind', (Object[])args) 

(Object []) dökme Groovy/Java uyumluluğu için du gereklidir. (Groovy, 'args' nesnesini bir dizi Nesne dizisi değil, bir ArrayList olarak ele alır.)

+0

Bu, döndürülen bir iş parçacığında kullanılırsa (en azından executor-plugin), eksik istek nedeniyle başarısız gibi görünüyor: ** java.lang.IllegalStateException: Konuya bağlı istek bulunamadı: Gerçek bir web isteğinin dışında istek özelliklerine başvuruyor musunuz? ** – heikkim

İlgili konular