我想使用Hibernate Validator来验证我的方法的参数。
我试图查找示例,并通过以下示例 JSR 303. Validate method parameter and throw exception
但答案并没有完全解决我的问题,而且答案中的链接也已过期。
以下是我尝试过的示例代码。
//removing imports to reduce the length of code.
/**
* Created by Nick on 15/06/2016.
*/
@Component
public class ValidationService {
@Value("${namesAllowed}")
private String validNames;
@Autowired
private Validator validator;
public boolean validateName(
@NotEmpty
@Pattern(regexp = ".*'.*'.*")
@Email
@Length(max = 10)
String name
) {
Set<ConstraintViolation<String>> violations = validator.validate(name);
for (ConstraintViolation<String> violation : violations) {
String propertyPath = violation.getPropertyPath().toString();
String message = violation.getMessage();
System.out.println("invalid value for: '" + propertyPath + "': " + message);
}
List<String> namesAllowed= Arrays.asList(validNames.split(","));
if (namesAllowed.contains(name.substring(name.indexOf(".") + 1))) {
return true;
}
return false;
}
}
}
答案 0 :(得分:1)
方法验证已经标准化为Bean Validation 1.1的一部分。您可以在Hibernate Validator reference guide中了解有关它的更多信息。
使用Spring,您需要配置MethodValidationPostProcessor bean并使用@Validated
注释受约束的类。 this answer也可能对您有所帮助。