Tag: hibernate validator

Hibernatevalidation器在正则表达式匹配上吃CPU

我们正在尝试使用hibernatevalidation器validation地址。 有时hibernatevalidation器会挂起java正则表达式匹配。 它完成了CPU占用率,无法处理任何其他内容。 有没有办法摆脱这个? 这是java 6中的错误吗? java.lang.Thread.State: RUNNABLE at java.lang.Character.codePointAt(Character.java:2335) at java.util.regex.Pattern$CharProperty.match(Pattern.java:3344) at java.util.regex.Pattern$Curly.match(Pattern.java:3737) at java.util.regex.Pattern$Ques.match(Pattern.java:3691) at java.util.regex.Pattern$Curly.match0(Pattern.java:3789) at java.util.regex.Pattern$Curly.match(Pattern.java:3744) at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168) at java.util.regex.Pattern$Loop.match(Pattern.java:4295) at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227) at java.util.regex.Pattern$Curly.match0(Pattern.java:3789) at java.util.regex.Pattern$Curly.match(Pattern.java:3744) at java.util.regex.Pattern$Ques.match(Pattern.java:3691) at java.util.regex.Pattern$Curly.match0(Pattern.java:3782) at java.util.regex.Pattern$Curly.match(Pattern.java:3744) at java.util.regex.Pattern$Ques.match(Pattern.java:3691) at java.util.regex.Pattern$Curly.match0(Pattern.java:3789) at java.util.regex.Pattern$Curly.match(Pattern.java:3744) at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168) at java.util.regex.Pattern$Loop.match(Pattern.java:4295) at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227) at java.util.regex.Pattern$Curly.match0(Pattern.java:3789) at java.util.regex.Pattern$Curly.match(Pattern.java:3744) at java.util.regex.Pattern$Ques.match(Pattern.java:3691) at […]

Bean Validation Groupinheritance不适用于Group Sequence Provider

我目前正致力于实现一个存储包含国内和国内地址的联系信息的应用程序,但也可以禁用地址。 我试图定义三个validation组:一个用于始终validation信息的超级组和两个用于不同地址状态的子类。 public interface ContactValidation {} public interface DomesticValidation extends ContactValidation {} public interface ForeignValidation extends ContactValidation {} 然后我在联系人类上定义了一个@GroupSequenceProvider。 public class ContactGroupSequenceProvider implements DefaultGroupSequenceProvider { @Override public List<Class> getValidationGroups(Contact contact) { List<Class> defaultGroupSequence = new ArrayList<Class>(); if(contact.getIsForeign()){ defaultGroupSequence.add(Contact.ForeignValidation.class); } else { defaultGroupSequence.add(Contact.DomesticValidation.class); } //TODO: Add Address Disabled Case defaultGroupSequence.add(Contact.class); //Get a GroupDefinitionException without this line […]

Dropwizard仅在@POST上validation字段

我有这些只读字段需要安全,如密码。 假设我们有一个用户对象: public class User { @NotEmpty @Size(max = 100) private String name; @NotEmpty private String username; @NotEmpty @Email private String email; private String password; @JsonIgnore public String getPassword() { return password; } @JsonProperty public void setPassword(String password) { this.password = password; } } 所以,这很好用; 就像我可以得到/发布/放置任何我想要的,但我永远不会收到密码。 但我也想确保第一次发布时,密码不应为空。 如果我做 @NotEmpty private string password; 如果我不想更改此用户的密码,那么我的PUT(编辑)请求将失败,并显示validation错误。 我能想到两种解决方案: 1-inheritanceUser类,只为POST创建一个特殊的类,它可以在getter上有@NotEmpty注释。 […]

Hibernate Validator:拦截无效值

我想设置我的bean以使用Hibernate Validator(用于validation)和Google Guice(用于DI和方法拦截)。 理想情况下,我想要一个设置,其中任何“失败”validation的方法将导致调用方法拦截器: public class Widget { @NotNull public Fizz getFizz() { return fizz; } } public class FailedWidgetInterceptor implements MethodInterceptor { public Object invoke(MethodInvocation invocation) throws Throwable { // This gets executed if Widget’s getFizz() returns null… } } 但看起来Hibernate Validator只允许您通过将对象T显式传递给ClassValidator的getInvalidValues()方法来确定通过/失败状态。 所以我需要一个地方来打个电话! 我能想到的唯一可行的解决方案是创建我自己的注释(我之前从未做过!),它可能如下所示: @NotNull public @interface AutoValidatingNotNull { // …?? } 然后在Guice Module […]

JSR303 – 应用按顺序定义的所有validation组

我有一个我想要进行条件validation的bean。 为此,我定义了一个DefaultGroupSequenceProvider ,它返回要validation的组列表。 现在,在validation违反序列中多个组中的约束的对象时,只有第一个有失败的组才会返回结果。 我想在所有违规行为中收到错误,而不仅仅是第一组失败的错误。 我认为这不需要代码示例,但如果我错了,我会乐意提供一个。 我在创建序列时遵循了这个http://kh-yiu.blogspot.com/2014/04/conditional-bean-validation-using.html 。 如果重要,我们使用Spring。 只是注意,这是有效的,因为无效的bean不可能被报告为有效。 但是如果用户有一些输入打破3个约束,并且我返回2个失败,则用户将在第一个字段被修正后立即在最后一个字段上获得另一个失败。 不完全是用户友好的。 例: 豆 @GroupSequenceProvider(BeanSequenceProvider.class) public class MyBean { @NotEmpty private String name; @NotNull private MyType type; @NotEmpty(groups = Special.class) private String lastName; // Getters and setters } 枚举类型 public enum MyType { FIRST, SECOND } 提供商 public class BeanSequenceProvider implements DefaultGroupSequenceProvider { @Override public […]

hibernatevalidation器的注释,用于将来至少24小时的日期

我知道存在注释@Future。 如果我使用此注释注释字段 @Future private Date date; 日期必须是将来意味着在当前时刻之后。 现在我需要在当前时刻之后至少24小时validation该日期。 我该怎么做?

在运行时动态禁用hibernatevalidation注释?

是否可以在运行时关闭每个类的某些约束/注释? 例如,如果我想在firstName字段上打开@NotNull检查,那可能吗? 这将使测试看到某个约束是否被正确触发更简单,因为我可以关闭所有其他约束,并只检查一个约束。

如何在类级别约束之前validation字段级别约束?

我上课了: @ColumnNameUnique(groups = CreateTableChecks.class) public class Table { @Valid @NotEmpty(groups = CreateTableChecks.class) private List measures; } 类级别约束@ColumnNameUnique(groups = CreateTableChecks.class)始终先运行,之后运行字段级约束@NotEmpty(groups = CreateTableChecks.class) 。 无论如何强制字段级约束@NotEmpty(groups = CreateTableChecks.class)先运行?

如何使用Spring MVC JSR-303 Validator将不同的模型类validation为一个表单

我在jsp页面中有表格如下: First Name Last Name Email Street City State Country 在这个jsp名字,姓氏和电子邮件属于一个模型类,即员工。 最后所有属性如Street,City等属于EmployeeDetails模型类。 public class Employee { private Long empId; @Size(min=2, max=30) private String firstName; @Size(min=2, max=30) private String lastName; @NotEmpty @Email private String email; @DateTimeFormat(pattern=”MM/dd/yyyy”) @NotNull @Past private Date doj; @Phone private String phone; private EmployeeDetail employeeDetail; Getter/Setter } EmployeeDetail: public class EmployeeDetail { @Size(min=2, […]

Springvalidation器:同时具有注释和validation器实现

是否可以同时为表单和注释约束提供validation器? 例如,在表单对象中包含此字段: @NotEmpty private String date; 但然后在validation器中validation日期的模式。 我知道有模式注释,但我只是想看看我是否可以使用这两种类型的validation。