2012-04-04 3 views
13

Я пытаюсь выяснить, как сделать перенаправление в рамках действия контроллера в Play (2.0) с помощью Scala.Play Framework - перенаправление с параметрами

Перенаправление с помощью

Redirect(routes.Application.index) 

работает просто отлично.

Что я не могу понять из документов, API или Google - как добавить параметры к вызову.

гряду из Grails, где это можно было бы сделать легко следующим образом:

Перенаправление действия: "индекс", Params: [ "ключ": "значение"] .

Единственный способ, который я нашел, - это переадресовать, используя строковый url и строку запроса, что кажется неудобным.

В принципе, я хотел бы как-то использовать Redirect (Call), но я не могу создать объект Call с использованием обратной маршрутизации.

Я пропустил что-то/не получил концепцию в Play/Scala?

Спасибо заранее!

ответ

15

Ellou»

Маршрут это просто функция, так что вы можете передать аргументы как обычно:

// Redirect to /hello/Bob 
def helloBob = Action { 
    Redirect(routes.Application.hello("Bob"))  
} 

Этот фрагмент кода происходит от http://www.playframework.org/documentation/2.0/ScalaRouting (в нижней части)

+0

Спасибо! На самом деле, я попробовал это в первую очередь, но компилятор жаловался, что я ввел слишком много аргументов. Проблема заключалась в следующем: действие принимает длинный, но в определении маршрутизации I, что должно быть значение по умолчанию для действия. Мне пришлось снять это. Поэтому теперь мне нужно вызвать либо индекс (None), либо index (Some (foo)). Исходя из Грайла, это кажется очень утомительным. – pchronz

+3

+1 Вот что такое безопасные URL-адреса. Я бы хотел, чтобы игра продавала их больше за то, что они есть. –

+1

+1 для безопасного типа, @DanBurton, thanx для редактирования – biesior

0

Вы также можете избежать создавая еще одну функцию только для этого в вашем контроллере. В конфигурации маршрута вы можете просто добавить что-то вроде этого:

GET /google @controllers.Default.redirect(to = "http://google.com") 
+0

@zenith: надеюсь, что это поможет –

+0

Muuuuch лучше! – emlai

+0

Это не работает. Я получаю 'Нет такого файла или каталога' –

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