Аgile-validate: параметры проверки
Назначение
Быстрый старт
Начать свой первый проект очень просто.
Вы можете загрузить пакет (https://github.com/mydeathtrial/agile-validate/releases) с последней стабильной версией из центрального репозитория Maven. Пакет был загружен в центральный репозиторий Maven, и его можно напрямую объявить в pom.
Например, версия agile-validate-2.1.0.M5.jar.
<!--объявление центрального репозитория-->
<repositories>
<repository>
<id>cent</id>
<url>https://repo1.maven.org/maven2/</url>
</repository>
</repositories>
<!--объявление зависимости-->
<dependency>
<groupId>cloud.agileframework</groupId>
<artifactId>agile-validate</artifactId>
<version>2.1.0.M5</version>
</dependency>
Используются для методов, которые должны пройти проверку параметров, и объявляют правила проверки параметров.
Существует два вида аннотаций:
Пример:
@Validate(value = "param1", validateType = ValidateType.EMAIL)
@Validate(value = "param1", validateRegex = "[\\d]+", validateMsg = "必须是数字")
@Validate(value = "param2", nullable = false, validateMsgKey = "messageKey", validateMsgParams = "cu")
@Validate(value = "params.param1.param2", nullable = false, validateMsg = "自定义错误")
@Validate(value = "a", customBusiness = {CustomValidate.class})
public void yourMethod(...){
...
}
//получение результата проверки параметра
List<ValidateMsg> result=ValidateUtil.handleInParamValidate(getMethod("yourMethod"),param);
//агрегация результатов проверки, если один и тот же параметр проходит через несколько этапов проверки, могут возникнуть различные ошибки, этот метод может объединить результаты проверки одного и того же параметра
List<ValidateMsg> result=ValidateUtil.aggregation(result);
Получение результатов проверки, класс инструментов cloud.agileframework.validate.ValidateUtil
/**
* Проверка метода
*
* @param method метод
* @param params набор параметров
* @return информация о проверке всех входящих параметров, включая имя параметра, значение параметра, сообщение об ошибке
*/
public static List<ValidateMsg> handleInParamValidate(Method method,Object params)
/**
* Объединение информации о параметрах проверки на основе одинаковой информации о параметрах
*
* @param list информация о проверке перед объединением
* @return объединённая информация после объединения, параметры, прошедшие проверку, удаляются, а повторяющиеся результаты проверки параметров объединяются в один, соответствующее сообщение об ошибке объединяется
*/
public static List<ValidateMsg> aggregation(List<ValidateMsg> list)
Объяснение параметров аннотации:
public @interface Validate {
/**
* Имя параметра
*/
String value() default "";
/**
* Встроенный тип проверки, например, электронная почта, номер телефона, число с плавающей запятой, домен, IP и т. д.
*/
ValidateType validateType() default ValidateType.NO;
/**
* Пользовательский шаблон проверки
*/
String validateRegex() default "";
/**
* Сообщение об ошибке при неудачной проверке
*/
String validateMsg() default "";
/**
* Сообщение об ошибке в формате интернационализации messages_*.properties, ключ значения
* Необходимо использовать вместе с spring message
*/
String validateMsgKey() default "";
/**
* Сообщение об ошибке интернационализации в формате messages_*.properties, {n} заполнитель
* Необходимо использовать вместе с spring message
*/
String[] validateMsgParams() default {};
/**
* Используется вместе с параметром beanClass, функция аналогична группе hibernate-validate, способ использования не меняется
*/
Class[] validateGroups() default {};
/**
* Функция аналогична способу проверки pojo hibernate-validate, соответствующий атрибут beanClass должен содержать аннотацию hibernate-validate
*/
Class<?> beanClass() default Class.class;
/**
* Может ли быть null, по умолчанию может
*/
boolean nullable() default true;
/**
* Можно ли быть пустой строкой, по умолчанию можно
*/
boolean isBlank() default true;
/**
* Максимальное значение числового типа
*/
double max() default Double.MAX_VALUE;
/**
* Минимальное значение числового типа
*/
double min() default Integer.MIN_VALUE;
/**
* Максимальная длина
*/
int maxSize() default Integer.MAX_VALUE;
/**
* Минимальная длина
*/
int minSize() default -1;
/**
* Процесс пользовательской бизнес-проверки
*/
Class<? extends ValidateCustomBusiness>[] customBusiness() default {};
}
Пример результата проверки:
[
{
"item": "param1",
"itemValue": "a",
"message": "Не соответствует формату электронной почты; должно быть число",
"state": false
},
{
"item": "param3",
"itemValue": "b1",
"message": "Ошиблись?",
"state": false
},
{
"item": "params.param1.param2",
"message":
``` **Пользовательская ошибка**
[ { "item": "param2", "message": "errorcu", "state": false } ]
##### Пользовательская проверка бизнес-кода
```java
// Используем атрибут customBusiness в аннотации @Validate, чтобы объявить используемый «класс проверки бизнеса».
// Класс проверки бизнеса должен реализовывать интерфейс ValidateCustomBusiness.
// Этот атрибут поддерживает объявление нескольких классов проверки бизнеса. При вызове метода validate компонента проверки компонент будет пытаться использовать управляемый Spring bean для вызова.
// Если bean не существует, он автоматически создаст объект класса проверки бизнеса и вызовет его. Поэтому класс проверки бизнеса может использовать все функции Spring.
@Validate(value = "paramKey",customBusiness = {CustomValidate.class})
public void yourMethod() {
}
// Определяем собственный класс проверки бизнеса
public class CustomValidate implements ValidateCustomBusiness {
@Override
public List<ValidateMsg> validate(Object params) {
// Пример пользовательского этапа проверки параметров
ValidateMsg validateMsg = new ValidateMsg();
validateMsg.setItem("paramKey");
validateMsg.setItemValue(params);
validateMsg.setMessage("Ошибка проверки бизнеса");
validateMsg.setState(false);
return Collections.singletonList(validateMsg);
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )