2013-11-02 47 views
1

我有一个简单的实体,名为Game。我想让我的用户一次编辑多个这些实体。因此我需要一个包含多个Game实体的表单。临时验证未执行

问题:当表单被提交并且我调用hasErrors()时,我从来没有调用我在Game实体中的自定义临时validate方法。只有通过注释标记的验证才会被检查,并在它们无效时产生错误。

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

回答