Java 开始游戏框架-我在这里犯了什么愚蠢的错误?

Java 开始游戏框架-我在这里犯了什么愚蠢的错误?,java,mongodb,playframework,Java,Mongodb,Playframework,因此,我开始在Mongo中使用play框架,但在尝试使用简单的MVC模式时遇到了一个问题。我看不到树木的树木与此,并知道解决办法一定是简单的 我将用户对象定义为实体: package models; import play.modules.mongo.MongoEntity; import play.modules.mongo.MongoModel; @MongoEntity("users") public class User extends MongoModel { publi

因此,我开始在Mongo中使用play框架,但在尝试使用简单的MVC模式时遇到了一个问题。我看不到树木的树木与此,并知道解决办法一定是简单的

我将用户对象定义为实体:

package models;

import play.modules.mongo.MongoEntity;
import play.modules.mongo.MongoModel;


@MongoEntity("users")
public class User extends MongoModel
{
    public String username;
    public String email;
    public String password;
}
我有一个控制器,里面有以下两种方法:

package controllers;

import models.User;
import play.mvc.Controller;
import play.Logger;

public class UserController extends Controller 
{
    public static void createUser()
    {
        User user = new User();
        render(user);     
    } 

    public static void insertUser(User iUser)
    {
        Logger.info("Paul 1: " + iUser + " :: " + (iUser ==  null));
    }

}
路线定义如下:

POST    /insertUser    UserController.insertUser
GET     /users         UserController.createUser
因此,我定义了以下页面视图,当我单击“保存”时,控制器中的代码告诉我用户对象为空:

#{extends 'main.html' /}
#{set title:'Create User' /}
<form action="@{UserController.insertUser(user)}" method="POST"/>

    Username: <input type="text" value="${user.username}" /><br/>
    Password: <input type="text" value="${user.password}" /><br/>
    Email: <input type="text" value="${user.email}" /><br/>
    <input type="submit" value="Add User" />
</form>
#{扩展'main.html'/}
#{设置标题:'Create User'/}
用户名:
密码:
电子邮件:
我在acton上尝试了大量的排列,但不明白为什么它不起作用。有什么想法吗?非常感谢所有的帮助,我知道我缺少的是一些愚蠢的东西,正是这些。

我想你至少缺少了HTML论坛输入元素上的
名称
属性,它们正在播放!将用于将窗体值映射到控制器参数。请尝试以下操作:

#{extends 'main.html' /}
#{set title:'Create User' /}
<form action="@{UserController.insertUser(user)}" method="POST"/>
    Username: <input type="text" name="user.username" value="${user.username}" /><br/>
    Password: <input type="text" name="user.password" value="${user.password}" /><br/>
    Email: <input type="text" name="user.email" value="${user.email}" /><br/>
    <input type="submit" value="Add User" />
</form>
#{扩展'main.html'/}
#{设置标题:'Create User'/}
用户名:
密码:
电子邮件:
或者,您可以使用来让模板系统为您生成表单。这对于用您自己的表单交叉检查
{form}
标记的输出以查看不同之处也很有用


更新:您可能还必须删除表单操作属性
{UserController.insertUser(user)}
中的
user
参数,这将更像
{UserController.insertUser}

解决方案是将用户类重命名为UserItem。我希望在Mongo或Play中有一个默认的用户类!那是个障碍


编辑:是的,包括名称映射在解决方案中也很有帮助,尽管它本身并不能解决这个问题。我将据此投票。

遗憾的是,这些建议都不起作用。仍然输出null:-(我假设解决方案是您更改类名的组合,@pHk的建议,因为他建议在输入标记中使用
name
属性,是Play将http表单项映射到对象的唯一方法。