Java 错误:类型登录不是对象控制器的成员。应用程序(播放框架)

Java 错误:类型登录不是对象控制器的成员。应用程序(播放框架),java,playframework,Java,Playframework,我在用IntelliJ进行游戏框架的练习。我完全按照概述的步骤进行了操作,但我不断遇到这个恼人的错误: "Type Login is not a member of Object controller.Application". 请帮助识别错误。我发现这个框架非常有缺陷,令人沮丧 完整错误消息: Error:(24, 196) type Login is not a member of object controllers.Application class login extends Bas

我在用IntelliJ进行游戏框架的练习。我完全按照概述的步骤进行了操作,但我不断遇到这个恼人的错误:

"Type Login is not a member of Object controller.Application".
请帮助识别错误。我发现这个框架非常有缺陷,令人沮丧

完整错误消息:

Error:(24, 196) type Login is not a member of object controllers.Application
class login extends BaseScalaTemplate[play.twirl.api.HtmlFormat.Appendable,Format[play.twirl.api.HtmlFormat.Appendable]](play.twirl.api.HtmlFormat) with play.twirl.api.Template1[Form[Application.Login],play.twirl.api.HtmlFormat.Appendable] {
Error:(27, 43) type Login is not a member of object controllers.Application
  def apply/*1.2*/(form: Form[Application.Login]):play.twirl.api.HtmlFormat.Appendable = {
Error:(71, 36) type Login is not a member of object controllers.Application
  def render(form:Form[Application.Login]): play.twirl.api.HtmlFormat.Appendable = apply(form)
Error:(73, 28) type Login is not a member of object controllers.Application
  def f:((Form[Application.Login]) => play.twirl.api.HtmlFormat.Appendable) = (form) => apply(form)
这是我的代码:

package models;

import com.avaje.ebean.Model;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class User extends Model {

    @Id
    public String email;
    public String name;
    public String password;

    public User(String email, String name, String password) {
        this.email = email;
        this.name = name;
        this.password = password;
    }

   public  Finder<String,User> find = new Finder<String,User>(
            String.class, User.class
    );

    public  User authenticate(String email, String password) {
        return find.where().eq("email", email)
                .eq("password", password).findUnique();
    }
}
视图:登录突出显示为错误

@(form: Form[Application.Login])
<html>
    <head>
        <title>Zentasks</title>
        <link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")">
        <link rel="stylesheet" type="text/css" media="screen" href="@routes.Assets.at("stylesheets/login.css")">
    </head>
    <body>
        <header>
            <a href="@routes.Application.index" id="logo"><span>Zen</span>tasks</a>
        </header>

        @helper.form(routes.Application.authenticate) {
            <h1>Sign in</h1>
            @if(form.hasGlobalErrors) {
                <p class="error">
                @form.globalError.message
                </p>
            }

            <p>
                <input type="email" name="email" placeholder="Email" value="@form("email").value">
            </p>
            <p>
                <input type="password" name="password" placeholder="Password">
            </p>
            <p>
                <button type="submit">Login</button>
            </p>
        }

    </body>
</html>

你正在使用哪个版本的剧本?您正在查看play 2.1.0的文档。我使用的是版本2.5。我使用的是2.1.0的文档,因为他们显然没有针对2.5.x用户的ZenTask(JavaGuided)。您可以查看迁移指南,因为自2.1以来发生了很多变化。我的最佳猜测是,您的路由需要控制器上的静态方法,但在2.5上,控制器被注入路由,您必须像这样映射操作
@controllers.Mycontroller.myAction()
。好的,谢谢。我会看看。
@(form: Form[Application.Login])
<html>
    <head>
        <title>Zentasks</title>
        <link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")">
        <link rel="stylesheet" type="text/css" media="screen" href="@routes.Assets.at("stylesheets/login.css")">
    </head>
    <body>
        <header>
            <a href="@routes.Application.index" id="logo"><span>Zen</span>tasks</a>
        </header>

        @helper.form(routes.Application.authenticate) {
            <h1>Sign in</h1>
            @if(form.hasGlobalErrors) {
                <p class="error">
                @form.globalError.message
                </p>
            }

            <p>
                <input type="email" name="email" placeholder="Email" value="@form("email").value">
            </p>
            <p>
                <input type="password" name="password" placeholder="Password">
            </p>
            <p>
                <button type="submit">Login</button>
            </p>
        }

    </body>
</html>
# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~

# Home page
GET     /                           controllers.Application.index()
GET     /login                      controllers.Application.login()
POST    /login                      controllers.Application.authenticate()

# Map static resources from the /public folder to the /assets URL path
GET     /assets/*file               controllers.Assets.at(path="/public", file)