简短地使用群组的想法是什么? 例如,类定义现在没有组。如果我们启用以下群组,会发生什么变化?
function MyApp(lang) {
this.messages = {};
this.switchLang(lang);
};
MyApp.prototype.loadLang = function(lang) {
this.messages = require('./lang/' + lang + '.js');
};
MyApp.prototype.switchLang = function(lang) {
this.lang = lang;
this.loadLang(lang);
};
MyApp.prototype.sayHello = function() {
alert(this.messages.HELLO);
};
module.exports = MyApp;
P.S。这些组还有两个相应的接口
答案 0 :(得分:1)
另外kocko说,它们也意味着对验证规则进行分类。引自JSR-303 final spec:
组允许您限制验证期间应用的约束集。
如果您重新添加上述组并按以下方式调用验证码:validator.validate(user, LengthGroup.class);
,则只会验证字段的长度。这意味着不考虑@EmailAddress
约束。
如果你这样调用验证器:validator.validate(user, LengthGroup.class, EmailGroup.class);
,你的所有约束都将被验证。
更多用于此功能的用例将是验证具有联系人数据的用户版本,而不是。考虑下面的例子:
@Size(min = 4, max = 30)
private String name;
@Size(min = 12, max = 120, groups=WithContactInfo.class)
private String address;
@Size(min = 5, max = 30, groups= WithContactInfo.class)
@EmailAddress(groups = WithContactInfo.class)
private String email;
现在,您可以验证不需要与validator.validate(user)
建立联系信息的用户,以及需要与validator.validate(user, WithContactInfo.class)
建立联系信息的用户。
答案 1 :(得分:0)
通过不同的属性向同一目标多次声明相同的约束通常很有用。这就是小组的意义所在。考虑这个例子:
public class Address {
@ZipCode.List( {
@ZipCode(countryCode="fr", groups=Default.class
message = "zip code is not valid"),
@ZipCode(countryCode="fr", groups=SuperUser.class
message = "zip code invalid. Requires overriding before saving.")
} )
private String zipcode;
}
在此示例中,两个约束都适用于zipcode字段,但具有不同的组和不同的错误消息。
取自here。
的示例