栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何验证vaadin形式的字段

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何验证vaadin形式的字段

瓦丹7

以下内容适用于Vaadin7。Vaadin 8中的validate()方法已被删除。

Vaadin中的所有Field类型都实现了

Validatable
接口,该接口具有
addValidator
接受Validator实现作为参数的方法。

因此,要添加一个验证器来检查TextField值的长度,您可以这样做:

TextField textField = new TextField();        textField.addValidator(     new StringLengthValidator(          "Must be between 2 and 10 characters in length", 2, 10, false));

Vaadin字段具有内置功能,可向用户显示验证错误。默认情况下,该字段将以红色突出显示,并且该字段旁边会出现一个感叹号,将鼠标悬停在该字段上会向用户显示更详细的消息。

自动验证

默认情况下,该字段现在将在下一个服务器请求上验证,该请求包含服务器对该字段的更改值。如果将该字段设置为“立即”,则会在该字段失去焦点时发生。如果该字段不是立即数,则当其他一些UI操作触发向服务器的请求时,将进行验证。

显式验证

有时,您可能希望对何时进行验证以及何时向用户显示验证错误进行更多控制。通过设置

validationVisible
为false 可以禁用自动验证。

textField.setValidationVisible(false);

准备好验证字段时(例如,在按钮单击侦听器中),可以
在TextField实例上显式调用

validate
(也可以使用,
commit()
如果它是缓冲字段)方法来触发验证。如果该值无效,
validate
将抛出
InvalidValueException
。如果要使用TextField组件中包含的内置验证错误显示,则还必须将其设置
validationVisible
true

try {    textField.validate();} catch (Validator.InvalidValueException ex) {    textField.setValidationVisible(true);    Notification.show("Invalid value!");}

请注意,将validationVisbible设置为true后,验证将隐式进行,因此,如果您要保持对验证的显式控制,则必须记住在下一个请求时将其设置为false。

验证信息

可以从Validator.InvalidValueException实例中提取单个验证消息,该实例在

validate()
commit()
调用时引发。

try {    textField.validate();} catch (Validator.InvalidValueException ex) {    for (Validator.InvalidValueException cause: ex.getCauses()) {        System.err.println(cause.getMessage());    }}

验证者

验证程序实现了验证程序接口,并且Vaadin附带了几个有用的验证程序。查阅API文档以获取有关这些的更多信息:https
:
//vaadin.com/api/7.4.5/com/vaadin/data/Validator.html

自定义验证器易于实现,这是摘自Vaadin的示例:

class MyValidator implements Validator {    @Override    public void validate(Object value) throws InvalidValueException {        if (!(value instanceof String &&     ((String)value).equals("hello"))) throw new InvalidValueException("You're impolite");    }}final TextField field = new TextField("Say hello");field.addValidator(new MyValidator());field.setImmediate(true);layout.addComponent(field);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/464370.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号