У меня есть приложение, в котором используется игра 2.3.8, scala и (если это имеет значение) play-auth.Play2, scala: как использовать результат контроллера от другого контроллера?
Есть контроллер, с помощью метода:
def foo(id: Long) = StackAction(AuthorityKey -> Everybody) { implicit request =>
//code forming json
Ok(json)
}
Как я могу получить, что JSON из другого контроллера? я пытаюсь что-то, но без успеха:
def bar(id : Long) = StackAction(AuthorityKey -> Everybody){ implicit request =>
val futureResponse = AnotherController.foo(id).apply(request)
val result = Await.result(futureResponse, Timeout(5, TimeUnit.SECONDS).duration)
Logger.debug("_______________________" + result.body) //dont't know how to convert that to json
//handle json there
Ok(newResult)
}
Как сделать это правильно?
В результате тело является 'Enumerator [Array [Byte]]', которые могли бы на самом деле не делать перечисления. Вам придется заставить его перечислить данные, нажав на «Итератет». Что-то вроде 'result.body | >>> Iteratee.foreach (println)' - но это все равно будет печатать байты, поэтому вам нужно будет преобразовать в 'String', и он, вероятно, будет разбит на разделы. почему ты хочешь сделать это? –
Кстати, создание контроллеров, зависящих друг от друга, не самая лучшая идея. Вы можете поместить общую логику где-нибудь и использовать ее из контроллеров. –