1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/agile-framework-agile-validate

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Аgile-validate: параметры проверки

hibernate-validator maven

Назначение

  • Объявление метода проверки параметров в форме аннотаций;
  • проверка параметров типа POJO;
  • проверка базовых типов параметров;
  • пользовательские правила проверки;
  • поддержка сценариев проверки;
  • проверка параметров коллекции;
  • настраиваемые сообщения об ошибках и интернационализация сообщений;
  • настройка бизнес-проверки.

Быстрый старт

Начать свой первый проект очень просто.

Шаг 1: загрузка пакета

Вы можете загрузить пакет (https://github.com/mydeathtrial/agile-validate/releases) с последней стабильной версией из центрального репозитория Maven. Пакет был загружен в центральный репозиторий Maven, и его можно напрямую объявить в pom.

Например, версия agile-validate-2.1.0.M5.jar.

Шаг 2: добавление зависимости Maven

<!--объявление центрального репозитория-->
<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>

Шаг 3: использование «из коробки»

Аннотации

Используются для методов, которые должны пройти проверку параметров, и объявляют правила проверки параметров.

Существует два вида аннотаций:

  1. com.agile.common.annotation.Validate — поддерживает несколько аннотаций.
  2. com.agile.common.annotation.Validates — может содержать несколько аннотаций Validate.

Пример:

@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 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/agile-framework-agile-validate.git
git@api.gitlife.ru:oschina-mirror/agile-framework-agile-validate.git
oschina-mirror
agile-framework-agile-validate
agile-framework-agile-validate
master