Ad-Hoc验证未执行

时间:2013-11-02 11:29:06

标签: java playframework playframework-2.0

我有一个名为Game的简单实体。我想允许我的用户一次编辑多个这些实体。因此,我需要一个包含多个Game实体的表单。

问题:提交表单并调用hasErrors()后,validate实体中的自定义临时Game方法永远不会被调用。只检查由注释标记的验证,并在它们无效时产生错误。

这是Game实体:

@Entity 
public class Game extends Model {
    @Id
    public Long id;

    @ManyToOne
    @Constraints.Required
    public Team team1;

    @ManyToOne
    @Constraints.Required
    public Team team2;

    //the validate method does not get called
    public String validate()
    {
        System.out.println("Validating the Game Entity.");
        if(team1.id == team2.id)
            return "You have to choose two different teams!";

        return null;
    }    

    public static Model.Finder<Long,Game> find = new Model.Finder<Long,Game>(Long.class, Game.class);
}

这是包含多个Game实体的表单。

public class GameForm {

    @Valid
    public List<Game> games;

    public GameForm()
    {
        games = new ArrayList<Game>();
    }   
}

这是控制器方法。

public static Result save()
{
    Form<GameForm> gameForm = form(GameForm.class).bindFromRequest();

    if(gameForm.hasErrors())
        return badRequest(create.render(gameForm));

    return redirect(
        routes.Games.index()
    );
}

1 个答案:

答案 0 :(得分:0)

文档说ad-hoc验证仅适用于“顶层”对象。

http://www.playframework.com/documentation/2.2.x/JavaForms

对于你的表格,这可能是List,而不是Game。