我的表单验证有什么问题

时间:2014-09-26 12:20:57

标签: java forms playframework playframework-2.3

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

@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()));
    }
}

1 个答案:

答案 0 :(得分:0)

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

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

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

我警告你agianst使用字段名称是&#34; name&#34;或&#34; id&#34;。它会产生冲突。在我理解id为id的id生成jquery错误之前,我花了很多时间。