Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Playframework 2.0 我需要为每个游戏形式创建一个类吗?_Playframework 2.0 - Fatal编程技术网

Playframework 2.0 我需要为每个游戏形式创建一个类吗?

Playframework 2.0 我需要为每个游戏形式创建一个类吗?,playframework-2.0,Playframework 2.0,事情是这样的:我对使用框架(和ORM)还不熟悉,所以我倾向于完全按照教程告诉/显示的方法来做。在Play的教程中,我们首先需要在控制器中创建一个子类,其变量名与HTML表单中的变量名完全相同 例如,我会使用HTML格式的表单: <form action="Controller1/action1"> <input type="text" name="param1"> <input type="text" name="param2"> <inpu

事情是这样的:我对使用框架(和ORM)还不熟悉,所以我倾向于完全按照教程告诉/显示的方法来做。在Play的教程中,我们首先需要在控制器中创建一个子类,其变量名与HTML表单中的变量名完全相同

例如,我会使用HTML格式的表单:

<form action="Controller1/action1">
  <input type="text" name="param1">
  <input type="text" name="param2">
  <input type="submit">
</form>

控制器1看起来像:

public class Controller1 extends Controller {

    public static class SubClass1 {
        public String param1;
        public String param2;

        public String validate() {
          if (param1....param2...){
             return "invalid..."
          }
          return null;
        }
    }

    public static Result action0() {
       return ok(somePage.render(form(SubClass1.class)));
    }

    public static Result action1() {
       Form<SubClass1> form = form(SubClass1.class).bindFromRequest();
    }
}
公共类控制器1扩展控制器{
公共静态类子类1{
公共字符串参数1;
公共字符串参数2;
公共字符串验证(){
如果(参数1…参数2…){
返回“无效…”
}
返回null;
}
}
公共静态结果action0(){
返回ok(somePage.render(表单(子类1.class));
}
公共静态结果action1(){
表单=表单(子类1.class).bindFromRequest();
}
}
Action0用于呈现页面并对其进行初始化。Action1用于接收表单数据并对其进行处理。我知道有时您可以这样做:
表单(User.class)
并且User是您模型中的一个类

我的问题是:

  • 我应该使用模型类(即
    form(User.class)
    )来创建表单,还是像上面那样使用在控制器中构建的子类? (我基本上知道我的表单数据将被用于模型…)

  • 只要我想接收表单对象,是否每次都需要传入表单对象

  • 子类1
    中参数的命名约定是什么?参数名称是否应该与HTML表单中的名称完全相同?它们会不同吗?我不使用FrimHelHelp来生成表单(我使用基础4而不是引导),所以我只是把表单传到页面,而实际上什么都不做。(除了显示错误或还原值,如
    value=“@form(“param1”)”

  • 有人告诉我,一旦我调用
    form.hasErrors()
    ,默认情况下将调用子类1中内置的
    validate()
    。这是真的吗?Play如何知道应该执行哪个函数来检查数据的有效性?(验证是保留字吗?验证如何?)

  • 谢谢:)

    我的答案是:

  • 不。在我的实践中,大多数时候使用模型类作为表单模型是个坏主意。这里的问题是表单提交后“合并”数据。在现实生活中,您永远不会在表单上存储模型的所有字段。若您使用域类作为表单模型,那个么在提交之后,您将有部分填充的域对象,需要从数据库中与域对象合并
  • 如你所愿。我只是将
    表单
    一些描述页面表单
    附加到域名类名中
  • 对不起,我不太熟悉java中的表单处理
  • @风居民回答#4。。。Play使用反射来检查模型类是否有一个名为“validate”的方法,如果有,则调用它。
    validate()
    方法只有在进行常规验证且未发现任何错误后才会调用,因此,如果将字段注释为
    @Required
    并且该字段缺失,则不会调用
    validate()
    。根据Play的版本,有3种具有不同返回类型(字符串、列表或映射)的
    validate()。