我目前正在使用play2框架开发一个Web应用程序。
大部分时间一切正常。 但是,当我决定重建项目时,我收到错误:"类型HomeController不是包控制器的成员"。
我已在网上完成了一些研究,并遇到了有关此错误的讨论和主题。但是,在所有这些问题上,这似乎就是答案:
"默认情况下,播放2.4生成依赖注入路由器,与以前不同,它使用静态路由器。你有两个选择,从build.sbt中删除routesGenerator行,这样play会生成一个静态路由器,或者(更好)制作你的控制器类而不是对象,并使用依赖注入。"
但是,在我的项目中,HomeController是类型而不是对象,并且似乎不是build.sbt中的routesGenerator lin。
这有点让我烦恼,所以如果有人有答案,那就太棒了。
我设法绕过它两次,但我不记得:(。
确定。某些规格的时间。
现在代码:
HomeController中:
package controllers;
import com.avaje.ebean.Ebean;
import com.avaje.ebean.Model;
import models.Strike;
import play.data.Form;
import play.data.FormFactory;
import play.mvc.*;
import views.html.*;
import javax.inject.Inject;
import java.util.List;
import static play.libs.Json.toJson;
/**
* This controller contains an action to handle HTTP requests
* to the application's home page.
*/
public class HomeController extends Controller {
@Inject FormFactory formFactory;
public Result index() {
return ok(index.render("", formFactory.form(Strike.class)));
}
public Result addStrike()
{
Form<Strike> st = formFactory.form(Strike.class).bindFromRequest();
st.get().save();
return redirect(routes.HomeController.index());
}
public Result getStrikes(){
List<Strike> strikes = new Model.Finder(Strike.class).all();
return ok(toJson(strikes));
}
}
路线:
GET / controllers.HomeController.index()
POST /strike controllers.HomeController.addStrike()
GET /strikes controllers.HomeController.getStrikes()
Build.sbt:
name := ""
version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean)
scalaVersion := "2.11.7"
libraryDependencies ++= Seq(
javaJdbc,
cache,
javaWs
)
有人有任何想法吗?
提前致谢!