我是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。
答案 0 :(得分:0)
将代码修复为html:
<input type="text" name="email">
<input type="text" name="password">