DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
Overview
Other MyFaces Extensions
- CODI
- Ext-Script
- [Orchestra]
- [Portlet Bridge]
Community
Development
Sponsorship
Unknown macro: {iframe}
DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
There are several use-cases for this feature. One of them is DRY for constraints in DTOs.
@Entity
public class User extends AbstractDomainObject
{
@NotNull @Column @Size(min = 2, max = 64)
private String firstName;
@NotNull @Column @Size(min = 2, max = 64)
private String lastName;
@ManyToMany(mappedBy = "users")
private List<Group> groups = new ArrayList<Group>();
//...
}
@Entity
public class Group extends AbstractDomainObject
{
@NotNull @Column @Size(min = 2, max = 14)
private String name;
@ManyToMany(cascade = CascadeType.PERSIST)
private List<User> users = new ArrayList<User>();
//...
}
@ConstraintSource(User.class)
public class UserDTO
{
private String firstName; //mapped automatically to User#firstName
private String lastName; //mapped automatically to User#lastName
//...
}
@ConstraintSource(User.class)
public class UserDTO
{
@IgnoreConstraintSource
@Size(min = 2, max = 32)
private String firstName; //no mapping - constraints of the current property are used
@TargetProperty("lastName")
private String surName; //mapped to User#lastName
//...
}
@ConstraintSource(User.class)
public class UserDTO
{
//...
@ConstraintSource(Group.class)
private String name; //mapped to Group#name
}
@ConstraintSource(User.class)
public class UserDTO
{
//...
@ConstraintSource(Group.class)
@TargetProperty("name")
private String defaultGroupName; //mapped to Group#name
}
@Entity
public class User extends AbstractDomainObject
{
@NotNull @Column @Size(min = 2, max = 64)
private String firstName;
@LastName @NotNull @Column @Size(min = 2, max = 64)
private String lastName;
}
@Target({METHOD, FIELD})
@Retention(RUNTIME)
@interface LastName {
}
@ConstraintSource(User.class)
public class UserDTO
{
//...
@ConstraintSource(User.class)
@TargetPropertyId(LastName.class)
private String surName; //mapped to User#lastName
}