2016-09-03 11 views
0

私は現在、再利用可能でクリーンな方法でアラートを実装する方法を見つけるのに苦労しています。 Playの点滅がリダイレクトのみを目的としているかどうかはわかりませんが、this postは、クラスResultのインスタンスで点滅するための回避策があることを示しています。Playで複数のimplict値を扱うときに暗黙的にFlashを渡すにはどうすればよいですか?

回避策は、例えば、ビューの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電話番号:

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

help @Samarに感謝します。しかし、' flash'を暗黙的にしてビューに渡さないと、このコンパイルエラーが発生します。私はそれが 'フラッシュ'を導入する前にすべてが機能していたので、 'メッセージ'と何か関係があるとは思わない。アラートを再利用可能な方法で実装する方法について他に提案はありますか? –

答えて

0

エラーに示すようにrequest2flash方法を介してフラッシュする要求から起こっ暗黙の変換があるので、あなたはフラッシュ暗黙のパラメータを渡す必要はありません。また

、あなたは要求を経由して、すでに暗黙のフラッシュを取得しているため、この行は必要ありません:val flash = play.api.mvc.Flash(Map("error" -> "Please select another id for this client"))

あなただけのための暗黙的な変換の引火一つとしてrequestパラメータを使用することができます。暗黙のメッセージを欠落しているため、エラーを修正するには

import play.api.i18n.Messages.Implicits._

+0

本当にありがとうございます。私はそれがすでに好きでしたが、私が達成しようとしているのは、 'Ok '(views.html.myPage(params))のように' Yippie!すべてうまくいったよ ")。私はコンパイルエラーを取得しませんが、フラッシュメッセージは単にレンダリングされません。 –

+0

ビューテンプレートでは、@ flash.get( "success")。getOrElse( "ようこそ!") – Samar

+0

のように、フラッシュオブジェクトを使用できます。また、Playは私にこの警告を与えます: '[warn] play - ステータスコード '200'を点滅させて使用していますが、これはリダイレクトステータスでのみ使用するべきです! –

関連する問題