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>

在这个阶段我遇到了一个编译错误: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") {
        ......
    }
}

然而,这样做会导致各种错误:在与JourneyCreator.scala.htmlerror: method render in class journeyCreator cannot be applied to given types;相关的其他方法中。任何帮助表示赞赏。

4

1 回答 1

1

您声明了视图的参数(它是函数),但没有传递它们,所以它导致了问题。

虽然在 Scala 函数中(类似于 PHP)你可以为参数设置默认值,但 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 回答