Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Validation Not Working on Nested Objects in Play Framework 2

I'm using the Constraint annotations for validating my objects in Play! framework 2. It works fine for top level objects, but not nested ones. How do I get my nested object validation annotations to work?

Event: The top level object I am saving.

@Entity
public class Event {

    @Required
    public String name;

    @OneToMany(cascade = CascadeType.ALL)
    public List<Option> options;

    ...
}

Option: The nested object. Its not validating the name property.

@Entity
public class Option {

    @Required
    public String name;

    ...
}
like image 591
TomahawkPhant Avatar asked Dec 20 '12 17:12

TomahawkPhant


1 Answers

Not familiar with Play, but it looks very close to javax.validation, in which you'd need to put @Valid on your options field to tell the validator to descend into that relationship. Play has an @Valid of its own, so I'd give that a shot.

Update: As OP pointed out, the above is Play 1.0. Instead, per the Play 2.0 docs, it uses Spring data binding and JSR-303 under the hood, so how about using the javax.validation @Valid annotation on it? Maybe Play 1.0 had a home-made validation framework and they decided to move to javax.validation in 2.0? That would explain why several validation annotations seem to have disappeared in the 2.0 API.

like image 129
Ryan Stewart Avatar answered Nov 16 '22 01:11

Ryan Stewart