0

В настоящее время я изо всех сил стараюсь найти способ внедрения предупреждений в многоразовой и чистой форме. Я не уверен, что вспышка Play предназначена только для переадресации, но this post указывает, что есть временное решение для мигания с экземплярами класса Result.Как передать неявно Flash при работе с несколькими значениями implict в Play?

Обходной предлагает использовать implicit параметр для вида, например:

@(clientForm: Form[models.Client])(implicit flash: Flash) 

А потом просто сделать что-то вроде этого:

val flash = play.api.mvc.Flash(Map("error" -> "Please select another id for this client")) 
Ok(views.html.clients.new_client(boundForm)(flash)) 

Проблема заключается в том, что я есть несколько неявных параметры на мой взгляд, id:

(implicit request: RequestHeader, messages: Messages, flash: Flash) 

Итак, компилятор c omplains с:

Unspecified value parameters: flash: Flash, messages: Messages

Как это решить?

Выполнение flash неявное, как предложено в (удаленном) ответе, не решило проблему. Я до сих пор получаю эту ошибку компиляции:

ambiguous implicit values: both method request2flash in trait Controller of type (implicit request: play.api.mvc.RequestHeader)play.api.mvc.Flash and value flash of type play.api.mvc.Flash match expected type play.api.mvc.Flash

+0

Вам не нужно передать флэш неявный параметр, поскольку существует неявное преобразование происходит от запроса прошить с помощью метода request2flash, как показано в новой ошибки. – Samar

+0

Для сообщения об ошибке, попробуйте 'import play.api.i18n.Messages.Implicits._' – Samar

+0

Спасибо за помощь @Samar, но когда вы делаете' flash' неявным и не передаете его в представление, я до сих пор получаю эту ошибку компиляции. Я не думаю, что это имеет какое-то отношение к «Сообщениям», поскольку все работало до введения «Flash». Есть ли у вас какие-либо другие рекомендации о том, как предупреждения могут быть реализованы повторно? –

ответ

0

Вам не нужно передать флэш неявный параметр, поскольку существует неявное преобразование происходит от запроса к прошить с помощью метода request2flash, как показано в сообщении об ошибке.

Кроме того, поскольку вы получаете неявную вспышку уже через запрос вам не нужна эта строка: val flash = play.api.mvc.Flash(Map("error" -> "Please select another id for this client"))

Вы можете просто использовать параметр request как Flash, один из неявного преобразования.

Чтобы исправить ошибку пропавших неявные сообщения: import play.api.i18n.Messages.Implicits._

+0

Я очень ценю вашу помощь. Я уже делал это до этого, но я пытаюсь использовать 'flashing' с' Ok', например: 'Ok (views.html.myPage (params)). Flashing (" success "->" Yippie! Все сработало. ")'. Я не получаю ошибку компиляции, но флеш-сообщение просто не будет отображаться. –

+0

В вашем шаблоне просмотров вы можете использовать Flash-объект следующим образом: @ flash.get («success»). GetOrElse («Добро пожаловать!») – Samar

+0

Но потом я получаю: 'Не удается разрешить flash-символ. Кроме того, Play дает мне это предупреждение: '[warn] play - вы используете код состояния '200' с миганием, который должен использоваться только с статусом перенаправления!'. –