2011-02-01 2 views
0

Может ли кто-нибудь предложить хорошую систему проверки, которую мы можем использовать в нашем Java-приложении? В нашем приложении нет форм, но мы передаем данные и отправляем их на несколько систем. Как только мы получим эти данные, мы хотим преобразовать его в pojo и выполнить некоторую проверку на этом pojo. рамки проверки, что позволяет поместить свои правила проверки в XML или плоский файл будет идеальнымJava - Validation Framework

Любая помощь по этому вопросу очень ценится

Thanks Damien

+2

http://stackoverflow.com/questions/397852/java-validation-frameworks – oluies

ответ

3

Заканчивать Hibernate Validator.

Источник метаданных по умолчанию - это аннотации, позволяющие переопределять и расширять метаданные с помощью дескрипторов проверки XML.

1

Java EE 6 имеет довольно мощный механизм проверки точно через аннотации (такие как @NotNull, @Size и т. Д.). Взгляните на Java Bean Validation. Лучшая часть состоит в том, что вы можете определить свои собственные аннотации, которые будут выполнять любые пользовательские проверки, которые могут вам понадобиться.

1

Ujorm framework на основе объектов домена ключ-значение предлагает специальные валидаторы, где основными функциями являются:

  • валидатор вызывается значение Writting событий всегда
  • валидаторы могут быть соединены с помощью AND/OR операторы
  • валидатор назначен клавише необязательно

Пример из использования валидатора в JavaBean:

import static org.ujorm.Validator.Build.*; 
public class ValidBo extends AbstractUjo implements Serializable { 

    /** Factory */ 
    private static final KeyFactory<ValidBo> f = newFactory(ValidBo.class); 
    /** Keys: */ 
    public static final Key<ValidBo, Long> PID = f.newKey(notNull()); 
    public static final Key<ValidBo, Integer> CODE = f.newKey(between(0, 10)); 
    public static final Key<ValidBo, String> NAME = f.newKey(regexp("T.*T")); 
    public static final Key<ValidBo, Double> CASH = f.newKey(min(0.0).and(notNull())); 

    static { 
     f.lock(); 
    } 

    // Setters: 
    public void setPid(Long pid) { 
     PID.setValue(this, pid); 
    } 

    public void setCode(Integer code) { 
     CODE.setValue(this, code); 
    } 

    public void setName(String name) { 
     NAME.setValue(this, name); 
    } 

    public void setCash(Double cash) { 
     CASH.setValue(this, cash); 
    } 

    // Getters ... 
} 

Для получения дополнительной информации см. documentation.

1

Существует также Oval, где ограничения могут быть объявлены аннотациями (@NotNull, @MaxLength), POJO или XML. Вы также можете создавать собственные пользовательские ограничения.