Вызов метода render () из вспомогательного метода фильтра в Grails

У меня есть фильтры, подобные тем, которые определены ниже. Они запускают один и тот же блок кода в разных местах, поэтому, чтобы он оставался СУХИМ, я реорганизовал этот код в метод doResponse ().

class MyFilters {

    def filters = {
        web(uri: '/web/**') {
            before = {

                // Do Stuff
                if (condition) {
                    doResponse(request, response, params)
                }
                return true
            }
            after = {
                if (condition) {
                    doResponse(request, response, params)
                }
                else {
                    // Do Stuff
                    doResponse(request, response, params)
                }

            }
            afterView = {
            }
        }
    }

    boolean doResponse(request, response, params) {
    // Do Stuff
        render(status: statusCode, contentType: "text/xml", encoding: "ISO-8859-1", text: text)
    // Do post-render stuff
        return false
    }
}

Однако это имеет неприятный побочный эффект. Кажется, что метод render () доступен только при закрытии фильтров. Есть ли у меня какой-нибудь (аккуратный) способ вызвать render () из doResponse ()?

Edit: Я получаю ошибку:

groovy.lang.MissingMethodException: нет сигнатуры метода: MyFilters.render () is применимо для типов аргументов: (java.util.LinkedHashMap) значения: [[статус: 500, contentType: text / xml, кодировка: ISO-8859-1, текст: ...]]

5
задан Einar 4 November 2010 в 15:56
поделиться