Play Framework 2でScalaテンプレートをレンダリングするときにオプションのパラメーターを定義することは可能ですか?
私のコントローラーは次のようになります:
public static Result recoverPassword() {
Form<RecoveryForm> resetForm = form(RecoveryForm.class);
return ok(recover.render(resetForm));
// On success I'd like to pass an optional parameter:
// return ok(recover.render(resetForm, true));
}
私のScalaテンプレートは次のようになります。
@(resetForm: Form[controllers.Account.RecoveryForm], success:Boolean = false)
また試しました:
@(resetForm: Form[controllers.Account.RecoveryForm]) (success:Boolean = false)
どちらの場合も、「エラー:クラスrecoverのメソッドrenderを指定されたタイプに適用できません。」
Javaコントローラーから値の割り当てを省略することはできません(Scalaコントローラーまたは他のテンプレートでは機能します)。この状況で最も速くて最もクリーンなソリューションは、デフォルト値での割り当てです。
public static Result recoverPassword() {
Form<RecoveryForm> resetForm = form(RecoveryForm.class);
if (!successfullPaswordChange){
return badRequest(recover.render(resetForm, false));
}
return ok(recover.render(resetForm, true));
}
Scalaコントローラーおよびテンプレートを呼び出すことができる他のテンプレートは、デフォルト値が指定されていない場合はデフォルト値を尊重するため、Scalaテンプレートは変更されないままにすることができます。
ところで:あなたが見ることができるように、あなたがプレイの結果を返すための適切な方法を使用する必要がありactions
、参照ok()
対badRequest()
も:forrbiden()
、notFound()
などなど
また、フラッシュスコープを使用redirect()
してメッセージを入力し、パスワードの変更が成功した後にメインページを使用して、フラッシュメッセージが存在するかどうかを確認して表示することもできます。
public static Result recoverPassword() {
...
if (!successfullPaswordChange){
return badRequest(recover.render(resetForm, false));
}
flash("passchange.succces", "Your password was reseted, check your mail");
return redirect(routes.Application.index());
}
任意のテンプレート:
@if(flash.containsKey("passchange.succces")) {
<div class="alert-message warning">
<strong>Done!</strong> @flash.get("passchange.succces")
</div>
}
(このスニペットはJavaのComputer Databaseサンプルからコピーされているため、自分のディスクで確認できます)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加