gpt4 book ai didi

scala - 如何使用 Scala 验证 Vaadin 中的表中的字段

转载 作者:行者123 更新时间:2023-12-01 07:02:32 25 4
gpt4 key购买 nike

如何验证 vaadin 表中的字段?例如带有正则表达式的年份字段:

   val persons: BeanContainer[Int, Person] =
new BeanContainer[Int, Person] classOf[Person])

persons.setBeanIdProperty("id")
persons.addBean(new Person("Thomas", "Mann", 1929, 123123))
persons.addBean(new Person("W. B.", "Yeats", 1923, 643454))
persons.addBean(new Person("Günter", "Grass", 1999, 743523))

// create table
val table: Table = new Table("Nobel Prize for Literature", persons)

table.setVisibleColumns(Array("id", "firstName", "lastName", "year"))

table.setColumnHeader("lastName", "last name")
table.setColumnHeader("firstName", "first name")
table.setColumnHeader("year", "year")

// create a validator
val yearValidator = new RegexpValidator("[1-2][0-9]{3}",
"year must be a number 1000-2999.");

// TODO check the year field!
table.addValidator(yearValidator)

我创建了一个正则表达式验证器,但如何将验证器设置到正确的字段?

最佳答案

您必须使用字段工厂拦截字段的创建并在那里添加验证器:

    table.setTableFieldFactory(new DefaultFieldFactory() {
@Override
public Field createField(Item item, Object propertyId, Component uiContext) {
Field field = super.createField(item, propertyId, uiContext);
if ("year".equals(propertyId)) {
field.addValidator(new RegexpValidator("[1-2][0-9]{3}",
"year must be a number 1000-2999.");
}
return field;
}
});

(Java,不是 Scala,但将其转换为 Scala 应该很简单)。

关于scala - 如何使用 Scala 验证 Vaadin 中的表中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7769999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com