Play Framework bindFromRequest()方法返回带有null参数的对象

时间:2017-06-05 16:27:14

标签: java playframework playframework-2.0

我是Play的新手!所以我正在尝试创建一个非常基本的帖子请求,用于提取用户输入表单的数据。但是,当我从表单中提取对象时,其所有字段都为null。例如。这是我写的一个叫做user的基本类。

# view/users/show.html.erb
<%= javascript_pack_tag "user-card" %>
<%= content_tag :div,
  nil,
  id: "user-card",
  data: { username: @user.name }
 %>

简单。这是我在Controller中的新用户类。

// app/javascript/packs/user-card.js
require("user-card")

// app/javascript/user-card/index.js
import Vue from 'vue/dist/vue.esm'
import UserCard from './components/UserCard'

document.addEventListener('DOMContentLoaded', () => {
  let element = document.getElementById("user-card")
  let username = element.dataset.username

  const app = new Vue({
    el: element,
    data: { username: username },
    template: '<UserCard :username="username"/>',
    components: { UserCard }
  })
})

// app/javascript/user-card/components/UserCard.vue
<template>
  <div>
    <h3>Hello {{ username }}</h3>
  </div>
</template>

<script>
export default {
  props: ['username']
}
</script>

我的路线档案:

public class User{

public String email;
public String password;

}

最后,HTML表单:

    public Result new_user() {
    User user = Form.form(User.class).bindFromRequest().get();

    System.out.println("Username: " + user.email);
    System.out.println("Password: " + user.password);

    return ok("This worked.");
    }

我知道这不会保存到数据库中,但如果我甚至无法打印到控制台,我真的没有看到尝试的重点。基本上发生的是控制台将打印“null”和“null”,无论我输入什么。我知道它确实创建了对象,因为打印用户将显示如下内容:

GET     /                    controllers.HomeController.start
POST    /accounts/login      controllers.HomeController.new_user()

但是字段没有设置!我该怎么做才能让这个工作?

编辑:我应该提一下,我检查了表单是否有任何错误,它返回false。

1 个答案:

答案 0 :(得分:0)

将代码修复为html:

     <input type="text" name="email">
     <input type="text" name="password">