java - 仅尝试 Play Framework,提交的表单中的值为空

  显示原文与译文双语对照的内容
0 0

我只是尝试了 Play Framework,并使用模板 play-java-intro 运行示例应用程序。

应用程序的索引页由一个"姓名"文本框和一个提交按钮组成。 单击提交按钮,它将把文本框的"姓名"值存储到"人员"table ( 数据库正在使用 H2 ) 中。 但是,"姓名"值未能发送到控制器。 在控制器中返回为空值。

enter image description here

模型: Person.java


@Entity
public class Person extends Model {

 @Id
 public String id;

 public String name;
}

视图: index.scala. html


@()

@main("Welcome to Play") {
 <script type='text/javascript' src='@routes.Assets.at("javascripts/index.js")'></script>

 <ul id="persons"></ul>

 <form method="POST" action="@routes.Application.addPerson()">
 <input type="text" name="name"/>
 <button>Add Person</button>
 </form>
}

控制器: Application.java


public class Application extends Controller {

 public static Result index() {
 return ok(index.render());
 }

 public static Result addPerson() {
//The person.name is null here
 Person person = Form.form(Person.class).bindFromRequest().get();
 person.save();
 return redirect(routes.Application.index());
 }

. . .
}

在控制器中,在单击"添加人员"按钮时调用函数 addPerson 。 从 person 对象返回 Form.form(Person.class).bindFromRequest().get(); 问题是返回的person 对象中的name 属性为空。

任何人都知道代码的错误?

时间: 原作者:

0 0

刚找到这个答案。

结果发现 Eclipse 构建的自动化会干扰字节码生成。

所以这就是我清理混乱的方法:

  • 在 Eclipse 中,取消选中:项目-> 自动生成
  • 在项目文件夹上的激活控制台中,输入命令: 清理
  • 输入命令:编译
  • 输入命令:运行
原作者:
...