自本周以来,Vaadin的6.6版预览版已可用。 在其他有趣的增强功能中,肯定会引起我的注意的是新的Filter API。
要了解它为何如此有趣,必须知道它在6.5版及更低版本中是如何处理的。 但首先,要谈谈Vaadin中的过滤器:它们在用于处理项目集合的容器中使用,以便对合格的项目进行分类。 Container.Filterable
接口定义添加单个过滤器的方法,其签名为:
addContainerFilter(ObjectpropertyId,StringfilterString,booleanignoreCase,booleanonlyMatchPrefix)
因此,我们只能过滤字符串相等性,并且可以针对大小写和位置松开/收紧该相等性。 此外,具有相同属性的过滤器是可加的。 如果您需要做的还不错,那就把鹅煮熟。 在对请求的先前建议中,过滤器必须不区分重音,不支持此功能。 我不得不砍拼了命来实现它。 实际上,由于大多数容器API的代码都是私有的,因此我将其复制以提供所需的选项替代方案。 它成功了,但很脏。
但是,新的API为过滤器提供了真正可扩展的模型,这使我以前的开发过时了。 值得一提的事实如下:
-
Container.Filterable
接口变为Container.SimpleFilterable
,方法签名中没有其他更改 - 使用以下方法添加了全新的
Container.Filterable
:
addContainerFilter(Container.Filterfilter)
- Filter接口公开,并带来一个完整的层次结构,同时考虑到布尔组成(这意味着您可以组合使用OR,AND或NOT进行过滤)。 该接口有两种方法:
appliesToProperty(ObjectpropertyId)
passesFilter(ObjectitemId,Itemitem)
这些更新使创建不区分重音的功能变得轻而易举。 结论是,如果您对Vaadin感兴趣,那么就必须看看新版本(如果仅适用于filter API)!
更进一步: