Создание ограниченных страниц с игрой! проверять подлинность

На моем сайте у меня есть выпадающее меню на главной панели навигации. Я хочу, чтобы все страницы в этом раскрывающемся списке были ограничены - поэтому для их просмотра требуется вход в систему, и пользователи перенаправляются на экран входа в систему, если они не вошли в систему. Я интегрировал все игры! Аутентифицировать код в моем проекте и посмотрел пример проекта play-authenticate-use. В их примере у них есть ограниченная страница, которая вызывает этот метод в 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>

На этом этапе я получаю ошибку компиляции: error: method render in class journeyCreator cannot be applied to given types; поэтому я проверяю страницу, которую я пытаюсь отобразить tripCreator.scala.html, и добавляю localUser: models.User = null arguement. Мой tripCreator.scala.html теперь выглядит так:

@(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; в других методах, связанных с tripCreator.scala.html. Любая помощь приветствуется.

1 ответ

Решение

Вы объявили параметры представления (которое является функцией), но не передали их, поэтому это вызывает проблему.

Хотя в функциях Scala (аналогично PHP) вы можете устанавливать значения по умолчанию для параметров, у Java есть проблемы с этим, поэтому вам нужно передать что-то на месте, это может быть просто... null

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

Позднее использовать @if(localUser!=null){ ... } условие, чтобы убедиться, что у вас есть то, что вам нужно.

Другие вопросы по тегам