【问题标题】:Java - Validation FrameworkJava - 验证框架
【发布时间】:2011-02-01 20:30:22
【问题描述】:

谁能推荐一个我们可以在我们的java应用程序中使用的好的验证框架? 我们的应用程序中没有表单,但我们将检索和发送数据传递给多个系统。 一旦我们得到这些数据,我们想把它转换成一个 pojo 并对那个 pojo 执行一些验证。 一个允许您将验证规则放入 xml 或平面文件的验证框架将是理想的

非常感谢您对此的任何帮助

谢谢 达米安

【问题讨论】:

标签: java validation


【解决方案1】:

查看Hibernate Validator

默认元数据源是注释,能够通过使用 XML 验证描述符覆盖和扩展元数据。

【讨论】:

    【解决方案2】:

    Java EE 6 通过注解(例如@NotNull、@Size 等)具有非常强大的验证机制。看看Java Bean Validation。最好的部分是您可以定义自己的此类注释,这些注释将执行您可能需要的任何自定义验证。

    【讨论】:

      【解决方案3】:

      还有Oval 可以使用注释(@NotNull、@MaxLength)、POJO 或 XML 声明约束。您还可以创建自己的自定义约束。

      【讨论】:

        【解决方案4】:

        基于键值域对象的Ujorm framework 提供了特殊的验证器,其主要特点是:

        • 总是在值写入事件上调用验证器
        • 可以使用 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 了解更多信息。

        【讨论】:

          猜你喜欢
          • 2010-09-28
          • 1970-01-01
          • 1970-01-01
          • 2011-10-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多