【问题标题】:What wrong i did with my form validation我的表单验证出了什么问题
【发布时间】:2014-09-26 12:20:56
【问题描述】:

我的表单很简单,只有两个字段

@Constraints.Required
public String name;
@Constraints.Required
public String slug;

渲染为:

@helper.form(routes.Add.create()) {
    <input type="text" name="name" id="new-category-name"/>
    <input type="text" name="slug" id="new-category-slug"/>
    <input type="submit" value="save"/>
}

我有一个问题,因为当我第一次提交没有值的表单时,我看到了错误,这没关系,但是在验证之后我再次重新提交我的表单(这次有值)我看到了我的错误

我有记录器 request.body() 和 form.errors:

[debug] application - DefaultRequestBody(Some(Map(name -> ArrayBuffer(name), slug -> ArrayBuffer(slug))),None,None,None,None,None,false)
[debug] application - {name=[ValidationError(name,[error.required],[])], slug=[ValidationError(slug,[error.required],[])]}

感谢您的帮助

我的创建操作:

public Result create(){
    categoryForm = categoryForm.bindFromRequest();

    if(categoryForm.hasErrors()){
        return ok(add.render(categoryForm));
    } else {
        Category category = new Category();
        CategoryForm cf = categoryForm.get();
        category.setName(cf.name);
        category.setSlug(cf.slug);
        categoryRepository.save(category);
        return redirect(routes.Edit.edit(category.getId()));
    }
}

【问题讨论】:

  • 向我们展示create 操作
  • “当我第一次提交没有值的表单时,我看到了错误,这没关系,但是在验证之后我再次提交我的表单(这次有值)我看到了我的错误”。当您从一开始就尝试提交正确的表单时会发生什么?
  • 当我正确提交此表单时,一切正常,类别对象存储在数据库中

标签: java forms playframework playframework-2.3


【解决方案1】:

尝试使用相同的 id 和名称:

<input type="text" id="slug"  name="slug">

您应该考虑使用play 2 helpers。有了它们,您一定会创建正确的表单。

我警告您不要使用名称为“name”或“id”的字段。它会产生冲突。我花了很多时间才明白值是 id 的 id 会产生 jquery 错误。

【讨论】:

  • 即使使用游戏助手也不能解决我的问题
  • 您是否尝试在激活器命令提示符中输入“clean”然后“compile”。
  • 那些命令不是解决方案,因为我已经切换到内置助手,我的问题还是一样
猜你喜欢
  • 2021-10-05
  • 2020-03-03
  • 2013-03-14
  • 1970-01-01
  • 1970-01-01
  • 2016-02-08
  • 2013-11-16
  • 1970-01-01
  • 2011-03-21
相关资源
最近更新 更多