Java Play : bindFromRequest() not working

标签 java html scala playframework forms http-post

我正在尝试使用 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/

相关文章:

Java 正则表达式模式和匹配器

java - 页面加载的默认 HtmlUnitDriver 超时是多少?

Java并发hashMap检索

java - org.jpedal.PdfDecoder.openPdfFile 在 Linux 服务器中抛出 NullPointerException

javascript - 无法在带有链接的页面上将图像居中。我究竟做错了什么?

javascript - 如何在 Facebook 帖子中嵌入自定义 HTML5 播放器?

jquery - 小数的正则表达式

scala - 裸 'extends'关键字

scala - reduceLeft可以并行执行吗?

java - 运行在 Jenkins 下运行 JVM 的批处理文件时的堆大小