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