【问题标题】:Java Play 2.3.8: DataSource user is null? bindFromRequest() does not work properlyJava Play 2.3.8:DataSource 用户为空? bindFromRequest() 无法正常工作
【发布时间】:2015-05-24 18:48:47
【问题描述】:

我这周开始学习 Play。现在我正在尝试编写一个在用户登录时创建会话的代码。 抱歉,帖子看起来有点乱,因为我是新用户,不允许发布图片。

我正在使用 Java play 2.3.8 和 eclipse 4.4.1(我已经尝试过在这里看到的其他技巧)

目前我总是收到此错误消息:

play.api.Application$$anon$1: 执行异常[[RuntimeException: java.lang.reflect.InvocationTargetException]] 在 play.api.Application$class.handleError(Application.scala:296) ~[play_2.11-2.3.6.jar:2.3.6] 在 play.api.DefaultApplication.handleError(Application.scala:402) [play_2.11-2.3.6.jar:2.3.6] 在 play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse$4.apply(PlayDefaultUpstreamHandler.scala:320) [play_2.11-2.3.6.jar:2.3.6] 在 play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse$4.apply(PlayDefaultUpstreamHandler.scala:320) [play_2.11-2.3.6.jar:2.3.6] 在 scala.Option.map(Option.scala:145) [scala-library-2.11.1.jar:na] 引起:java.lang.RuntimeException:java.lang.reflect.InvocationTargetException 在 play.data.Form.bind(Form.java:394) ~[play-java_2.11-2.3.6.jar:2.3.6] 在 play.data.Form.bindFromRequest(Form.java:221) ~[play-java_2.11-2.3.6.jar:2.3.6] 在 controllers.Application.authenticate(Application.java:70) ~[classes/:na] 在 Routes$$anonfun$routes$1$$anonfun$applyOrElse$11$$anonfun$apply$11.apply(routes_routing.scala:209) ~[classes/:na] 在 Routes$$anonfun$routes$1$$anonfun$applyOrElse$11$$anonfun$apply$11.apply(routes_routing.scala:209) ~[classes/:na] 引起:java.lang.reflect.InvocationTargetException:null 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_31] 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_31] 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_31] 在 java.lang.reflect.Method.invoke(Method.java:483) ~[na:1.8.0_31] 在 play.data.Form.bind(Form.java:391) ~[play-java_2.11-2.3.6.jar:2.3.6] 引起:java.lang.RuntimeException:DataSource 用户为空? 在 com.avaje.ebeaninternal.server.lib.sql.DataSourcePool.(DataSourcePool.java:204) ~[avaje-ebeanorm-3.3.4.jar:na] 在 com.avaje.ebeaninternal.server.core.DefaultServerFactory.getDataSourceFromConfig(DefaultServerFactory.java:419) ~[avaje-ebeanorm-3.3.4.jar:na] 在 com.avaje.ebeaninternal.server.core.DefaultServerFactory.setDataSource(DefaultServerFactory.java:385) ~[avaje-ebeanorm-3.3.4.jar:na] 在 com.avaje.ebeaninternal.server.core.DefaultServerFactory.createServer(DefaultServerFactory.java:163) ~[avaje-ebeanorm-3.3.4.jar:na] 在 com.avaje.ebeaninternal.server.core.DefaultServerFactory.createServer(DefaultServerFactory.java:125) ~[avaje-ebeanorm-3.3.4.jar:na]

这是我的方法,叫做:

public static Result authenticate() {

    Form<Login> loginForm = Form.form(Login.class);

    Login loginUser = loginForm.bindFromRequest().get();


    if (!usersList.getUsers().contains(loginForm)) {
        return ok(login.render("test"));
    } else {
        session().clear();
        session("email", loginForm.get().email);
        System.out.println("ich bin hier");
        return redirect(routes.Application.login());

    }


}

这是模型(getter 和 setter 也有):

public class Login {

public Login(){

}
public String email;
public String password;

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

public String validate() {
    if (Users.authenticate(email, password) == null) {
      return "Invalid user or password";
    }
    return null;
}

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

这里是 scala.html 文档:

<div class="Login">
   <br>
    <br>
     <br>
      <br>

      <h1>Login</h1>

<form action="@routes.Application.authenticate()" method="post">
 <p><input type="email" name="email" placeholder="Email" value=""></p>
 <p><input type="password" name="password" placeholder="Password" value=""></p>
 <p class="submit"><input type="submit" name="Login" value="Login"></p>
</form>   

最后但并非最不重要的一点是,我的浏览器中的错误消息说异常是在第 70 行引发的:

[运行时异常:java.lang.reflect.InvocationTargetException]

System.out.println("nach loginform"); 68 69 //System.out.println(loginForm.bindFromRequest().toString()); 70 登录 loginUser = loginForm.bindFromRequest().get(); 71 72 System.out.println(loginForm.toString()); 73// 表单 loginForm = form(Login.class).bindFromRequest(); 74
75 if (!usersList.getUsers().contains(loginForm)) {

提前感谢您帮助我解决这个问题

【问题讨论】:

    标签: java html eclipse scala playframework-2.0


    【解决方案1】:

    你错过了什么

    @Entity 
    public class Login extends Model {
    

    并检查ebean.default="models.*" 行是否在application.conf 中未注释

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-14
      • 2017-06-17
      • 1970-01-01
      • 1970-01-01
      • 2017-02-17
      • 2017-03-30
      • 2015-02-20
      相关资源
      最近更新 更多