首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >点击按钮启动验证(Java )

点击按钮启动验证(Java )
EN

Stack Overflow用户
提问于 2012-09-20 04:27:56
回答 1查看 682关注 0票数 3

有一个为触摸屏设计的Java Swing应用程序(到处都是大按钮),与往常一样,它用输入字段(textbox、combos、复选框、收音机、.)+一个按钮来保存数据。

我需要一种实现验证器的“通用”方法(只需要数字,定期表示,.)该按钮的单击显示验证摘要(可能在消息框上),类似于ASP.NET的验证器系统,在该系统中,您与按钮一起向同一验证组中的输入字段分配了一批验证器,单击事件直到每个验证器通过测试后才会触发。

问题是如何实现这种验证样式或使用哪个框架?

到目前为止,我在网上看到了3种选择,但没有一种适合我的需求:

  • Java的InputVerfier类:这很简单,很好,但是当输入失去焦点时工作,对触摸屏用户来说真的很烦人。
  • 简单验证API:它是我的验证风格中最接近的API,但它似乎与显示底部错误的验证面板紧密相连。我可以使用这个API的一个变体来改变它在屏幕上显示错误的方式。
  • JGoodies验证:看起来太强大了,但是找不到任何简单的例子,而且我没有实现任何模型模式,因为这个框架似乎需要它。
EN

回答 1

Stack Overflow用户

发布于 2012-10-08 10:58:36

OVal (http://http://oval.sourceforge.net/)可以完全满足您的需要。

让我们想象一下,您有一个来自表单的所有值的占位符。它可以在用户提交表单时用实际数据来构造和填充。OVal允许您为类字段定义约束:

代码语言:javascript
复制
public class BusinessObject {

  @NotNull
  @NotEmpty
  @Length(max=32)
  private String name;

  ...
}

有了这个定义,就可以很容易地触发验证过程。OVal会给你提供一个违规列表,这样你就可以很容易地构建你的摘要对话。

代码语言:javascript
复制
Validator validator = new Validator();
BusinessObject bo = new BusinessObject();

// collect the constraint violations
List<ConstraintViolation> violations = validator.validate(bo);

您可以使用getters约束来消除中间占位符。

代码语言:javascript
复制
public class BusinessObject {

  @IsInvariant
  @NotNull 
  @Length(max = 4)
  public String getName() {
  ...
  }
}

请注意,OVal遵循干净的设计原则,易于扩展。不管怎么说,它提供了相当多的电力开箱而出:

  • 使用表达式语言的条件约束
  • 嵌套属性的约束
  • 递归验证
  • 方法参数的约束
  • 为先决条件编写脚本表达式
  • 方法返回值约束
  • 探测模式以简化用户界面输入验证
  • 还有更多

请参阅http://oval.sourceforge.net/userguide.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12506061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档