只是尝试播放框架,提交表单的值为空
Posted
技术标签:
【中文标题】只是尝试播放框架,提交表单的值为空【英文标题】:Just trying Play framework, the value from the submitted form is null 【发布时间】:2014-09-03 18:46:45 【问题描述】:我刚刚尝试了 Play 框架,并使用模板 play-java-intro 运行示例应用程序。
应用程序的索引页由一个“名称”文本框和一个提交按钮组成。如果我单击提交按钮,它将文本框的“名称”值存储到“人员”表中(数据库使用 H2)。但是,“名称”值未能发送到控制器。它在控制器中返回为空值。
模型: 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
属性为空。
有人知道代码有什么问题吗?
【问题讨论】:
您是否将Person
传递回视图?
我不太明白你的意思,代码还是原封不动的,我没有改变它们的任何部分。我在 Eclipse 中使用调试器检查过,Person.name
为空。
我过去只使用过 Scala 游戏,所以我在这里继续记忆。您是否尝试过输入的名称Person.name
?另外,你用的是什么版本的play? 2.x.x?
你输入的名字是什么意思?我正在使用最新版本的激活器(1.2.10)。所以我猜Play肯定是v2。
我刚刚查明原因,是Eclipse的自动构建搞乱了代码生成。
【参考方案1】:
刚刚发现这个answer。
事实证明,Eclipse 的自动构建会干扰字节码的生成。
这就是我收拾烂摊子的方法:
在 Eclipse 中,取消选中:项目 -> 自动构建 在项目文件夹的激活器控制台中,输入命令:clean 输入命令:编译 输入命令:运行【讨论】:
我正在使用 IntelliJ,但仍然面临这个问题!有什么可能的解决办法吗?以上是关于只是尝试播放框架,提交表单的值为空的主要内容,如果未能解决你的问题,请参考以下文章