组合框采用隐藏式按键

时间:2019-01-31 18:09:42

标签: vaadin vaadin10 vaadin-flow

在vaadin 12中是否可能具有组合框,使其显示用户友好的值,但在幕后却存储了隐藏代码?我从5年前就发现了这个示例,但是它不适用于Vaadin 12组合框:https://vaadin.com/forum/thread/7821327/combo-box-hidden-values

(如果有一种很好的,相当干净的方法,请向我指出正确的方向!我认为这是常见的抢手特性)

2 个答案:

答案 0 :(得分:3)

直接使用a = '# #DataScience' b = 'kjndjk#jnjkd' c = "# #DataScience #KJSBDKJ kjndjk#jnjkd #jkzcjkh# iusadhuish#" regex = '(\s+)#(\S)' import re print re.sub(regex, '\\1\\2', a) print re.sub(regex, '\\1\\2', b) print re.sub(regex, '\\1\\2', c) 或间接通过ComboBox将项目分配给setItems

该项目本身不会发送到浏览器,而是显示在下拉列表中。而是为每个项目setDataProvider生成一个字符串标签,该字符串标签显示在UI中,并生成一个内部ID,该ID在服务器上使用,当用户做出选择时,该内部ID映射回原始项目实例。

生成的ID在ComboBox内部,没有外部含义。特别是,它不是基于项目本身的任何值,例如应用程序数据库中项目的主键。

默认情况下,标签是基于对每一项进行ComboBox的操作。您可以通过分配项目标签生成器回调来自定义标签的创建方式,该回调函数接收项目实例并返回要用于该项目的标签字符串。

例如,如果您有一个用于选择人员的组合框,则可以在例如这样:

toString()

答案 1 :(得分:2)

如果我对您的理解正确,那么ComboBox中有一个内置功能,该方法称为setItemLabelGenerator(..),该方法可以定义例如返回字符串的lambda表达式,该字符串用于ComboBox项,而不是基础数据对象的属性。

您找到的链接的论坛讨论与我们上一代框架中的类似内容有关,此处对API进行了一些重命名。