0

私のウェブサイトでは、メイン ナビゲーション バーにドロップダウン メニューがあります。このドロップダウン リストのすべてのページを制限したい - そのため、それらを表示するにはログインが必要であり、ユーザーがログインしていない場合はログイン画面にリダイレクトされます。すべてのプレイを統合しました! 私のプロジェクトにコードを認証し、サンプルプロジェクトplay-authenticate-usageを見ました。彼らの例では、Application.java でこのメソッドを呼び出す制限されたページがあります。

@Restrict(Application.USER_ROLE)
public static Result restricted() {
    final User localUser = getLocalUser(session());
    return ok(restricted.render(localUser));
}

このメソッドは、表示されるレンダリングされたページを返します。このメソッドを複製して、必要な制限付きページを返すことができるようにしました。

@Restrict(Application.USER_ROLE)
public static Result restrictedCreate() {
    final User localUser = getLocalUser(session());
    return ok(journeyCreator.render(localUser));
}

この新しいメソッドをルート ファイルに追加しました。

GET     /restricted                         controllers.Application.restrictedCreate()

そして、ドロップダウン コードで変更して、新しいメソッドを呼び出すようにします。

<li><a href="@routes.Application.restrictedCreate()"><i class="icon-plus-sign"></i> @Messages("journeys.dropdown.option1")</a></li>

この段階で、コンパイル エラーが発生します。そのため、 journeyCreator.scala.htmlerror: method render in class journeyCreator cannot be applied to given types;をレンダリングしようとしているページを確認し、引数を追加します。私のjourneyCreator.scala.htmlはこれになりました:localUser: models.User = null

@(localUser: models.User = null, listJourneys: List[Journey], journeyForm: Form[Journey])

@import helper._

@main("Journey Creator", "journeys") {
        ......
    }
}

ただし、これを行うと、あらゆる種類のエラーが発生します。error: method render in class journeyCreator cannot be applied to given types;他のメソッドでは、journeyCreator.scala.htmlに関連しています。どんな助けでも大歓迎です。

4

1 に答える 1

1

ビューのパラメーター (関数) を宣言しましたが、それらを渡さなかったため、問題が発生しています。

Scala 関数 (PHP と同様) では params のデフォルト値を設定できますが、Java には問題があるため、その場所に何かを渡す必要があります。null

public static Result restrictedCreate() {
    final User localUser = getLocalUser(session());
    return ok(journeyCreator.render(localUser, null, null));
}

後で@if(localUser!=null){ ... }ビューで条件を使用して、必要なものがあることを確認します。

于 2012-11-28T10:07:18.567 に答える