在我的网站上,我在主导航栏上有一个下拉菜单。我希望此下拉列表中的所有页面都受到限制 - 因此需要登录才能查看它们,如果用户未登录,则会将用户重定向到登录屏幕。我已整合了所有游戏!在我的项目中验证代码并查看示例项目 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>
在这个阶段,我收到一个编译错误:error: method render in class journeyCreator cannot be applied to given types;
所以我检查我试图呈现 journeyCreator.scala.html 的页面并添加localUser: models.User = null
争论。我的 journeyCreator.scala.html 现在看起来像这样:
@(localUser: models.User = null, listJourneys: List[Journey], journeyForm: Form[Journey])
@import helper._
@main("Journey Creator", "journeys") {
......
}
}
但是这样做会导致各种错误:{em> journeyCreator.scala.html 的其他方法中的error: method render in class journeyCreator cannot be applied to given types;
。任何帮助表示赞赏。
答案 0 :(得分: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){ ... }
条件以确保您拥有所需内容。