2009-12-21 3 views
6

Мне было интересно, есть ли у кого-нибудь идея наилучшего способа предоставления функции bindData() вне моего контроллера grails. В моем текущем проекте я создал несколько классных классов для моделирования объектов, возвращаемых api. В этих классах у меня есть статический метод, который анализирует xml и возвращает a Список объектов класса. Я хотел бы пропустить весь тип литья ерундой, используя метод bindData в этих классах. Любые предложения по , как это сделать, будут оценены.Использование метода bindData вне контроллера

ответ

8

Я искал аналогичное решение, чтобы использовать bindData в классе сервиса. Я нашел решение в JT's blog. Решение в основном импорт:

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

затем добавьте в ваш код:

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

(Object []) приведение необходимо им в Groovy/Java совместимость. (Groovy обрабатывает объект args как ArrayList, а не массив объектов.)

+0

Если это используется в отстрочной нитке (по крайней мере, с помощью плагина-исполнителя), кажется, что он не работает из-за отсутствия запроса: ** java.lang.IllegalStateException: запрос на привязку не найден: вы ссылаетесь на атрибуты запроса вне фактического веб-запроса ... ** – heikkim

Смежные вопросы