我正在尝试使用 Java Play,但遇到了直接障碍。情况非常简单,设置也很简单。
我有一个名为 Person
的模型类,它非常简单,看起来像这样;
package models.models;
import play.db.ebean.Model;
import javax.persistence.Entity;
import javax.persistence.Id;
/**
* Created by asheshambasta on 25/07/14.
*/
@Entity
public class Person extends Model {
@Id
public Integer id;
public String name;
}
我有一条路线定义为;
POST /person controllers.Application.addPerson()
接下来,我在 controllers.Application
中有一个操作 addPerson
,它是
public static Result addPerson() {
Person person = form(Person.class).bindFromRequest().get();
person.save();
Logger.debug(person.toString());
Logger.debug(form().get("name"));
return redirect(controllers.routes.Application.index());
}
index.scala.html 看起来像:
@(message: String)
@main("Welcome to Play") {
<form action="@routes.Application.addPerson()" method="post">
<input type="text" name="name" />
<button>Add person</button>
</form>
}
我还检查了我的浏览器调试工具,我看到 name
表单元素正确地发布到服务器。
发生的事情很奇怪:在操作中似乎没有任何表单参数可见。如您所见,我有两个 Logger.debug
,每个都显示 person
对象中的 name
属性为 null ,以及尝试使用 form.get("name")
检索时。
我已经尝试了我能看到的解决这个问题的最佳方法,但我在网上并没有真正看到太多关于这个问题的信息。这似乎太基本了,不会成为 Play 框架的问题。
我在这里做错了什么?
请注意,我在 Mac 上使用 mySQL 来存储数据。
最佳答案
在尝试使用 Java 时,我也遇到了同样的问题。
原因: 当您将 Eclipse 项目首选项设置为 自动构建
时,问题似乎会出现。这会弄乱 play 生成的类,并在更改时用 eclipse 生成的类覆盖它。
解决方案: 从项目设置和终端中禁用“自动构建”
,执行play clean
以从 Play 创建类!
请告诉我这是否有效,很多人都面临同样的问题。这可能应该是文档本身的提示 Reference .
关于Java Play : bindFromRequest() not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24960959/