Грааль: с форматом в середине действия метода - PullRequest
1 голос
/ 20 июля 2011

Это ошибка?У меня есть следующий блок в middle моего метода действия, заключенного в оператор if:

withFormat {
  json{ 
    render returnMap as JSON
    return 
  }
}

ReturnMap отображается клиенту очень хорошо, но метод продолжает выполняться какесли возврат не был обработан.Что случилось?

Я использую Grails 1.3.7.


Чтобы ответить на свой вопрос: Я обнаружил, что это как-то связано с блоком withFormat.Если я удаляю его, оператор return работает нормально.Когда создается withFormat, кажется, что оператор return выходит из этого блока и продолжает выполнение оставшегося метода. Редактировать: Берт пояснил ниже, что это закрытие json {}, которое завершается с оператором return (или без него, я думаю).Если после этого закрытия есть операторы, они будут выполнены.

1 Ответ

1 голос
/ 20 июля 2011

Возвращение выходит из замыкания json, но не из всего метода. Это похоже на методы с методами - вы можете открыть только один уровень. Вам нужно установить флаг внутри блока и проверить его снаружи, что-то вроде

boolean renderedJson = false
...
withFormat {
  json{ 
    render returnMap as JSON
    renderedJson = true
  }
}
...
if (renderedJson) {
   return
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...