propertyFilter 属性过滤器
propertyFilter
可以基于某个 entity 属性定义一个过滤器条件。
该组件可以在 genericFilter 组件内使用或者独立使用。
-
XML 元素:
propertyFilter
-
Java 类:
PropertyFilter
基本用法
一般情况下,propertyFilter
包含一个实体属性标题的标签、一个运算符标签或者选择器(=
、contains
、in
、>
等)以及一个用于编辑条件值的字段。
下面示例演示了 propertyFilter
的声明式用法。
<data>
<collection class="com.company.onboarding.entity.User" id="usersDc">
<fetchPlan extends="_base">
<property name="department" fetchPlan="_base"/>
</fetchPlan>
<loader id="usersDl">
<query>
<![CDATA[select e from User e]]>
</query>
</loader>
</collection>
</data>
<layout>
<propertyFilter dataLoader="usersDl"
operation="EQUAL"
property="department"/>
</layout>
dataLoader、property 和 operation 都是必需属性。
一个视图中可以使用多个 propertyFilter
组件连接至同一个数据加载器,此时,加载器会按照多个条件对数据进行过滤。
XML 属性
id - alignSelf - autoApply - classNames - colspan - dataLoader - defaultValue - enabled - errorMessage - height - helperText - invalid - label - labelPosition - labelVisible - labelWidth - maxHeight - maxWidth - minHeight - minWidth - operation - operationEditable - operationTextVisible - parameterName - property - readOnly - required - requiredIndicatorVisible - requiredMessage - tabIndex - themeNames - visible - width
dataLoader
dataLoader
是一个必需属性。设置与当前 propertyFilter
关联的 数据加载器。
labelVisible
设置 label 是否可见。默认值为 true
。
labelWidth
设置 label 的宽度。宽度值需要能被浏览器解析,例如,"100px"
或 "2.5em"
。
operation
operation
是必需属性,设置过滤运算符。有下列类型:
-
EQUAL
适合字符串、数字、布尔、日期/时间、引用、枚举属性。结果中的实体实例要满足:其属性列与过滤器中的条件值匹配。 -
NOT_EQUAL
适合字符串、数字、布尔、日期/时间、引用、枚举属性。结果中的实体实例要满足:其属性列与过滤器中的条件值不匹配。 -
GREATER
适合数字和日期属性。结果中的实体实例要满足:其属性列大于过滤器中的条件值。 -
GREATER_OR_EQUAL
适合数字和日期属性。结果中的实体实例要满足:其属性列大于等于过滤器中的条件值。 -
LESS
适合数字和日期/时间属性。结果中的实体实例要满足:其属性列小于过滤器中的条件值。 -
LESS_OR_EQUAL
适合数字和日期/时间属性。结果中的实体实例要满足:其属性列小于等于过滤器中的条件值。 -
CONTAINS
适合字符串属性。结果中的实体实例要满足:其属性列包含过滤器中的条件值。 -
NOT_CONTAINS
适合字符串属性。结果中的实体实例要满足:其属性列不包含过滤器中的条件值。 -
STARTS_WITH
适合字符串属性。结果中的实体实例要满足:其属性列以过滤器中的条件值开头。 -
ENDS_WITH
适合字符串属性。结果中的实体实例要满足:其属性列以过滤器中的条件值结尾。 -
IS_SET
适合字符串、数字、布尔、日期/时间、引用、枚举属性。该运算符仅检测属性列的数据不是 null。为该运算符生成的comboBox
仅包含两个值:Yes
和No
。如果用户选择Yes
,结果包含实体实例满足:该列有数据。否则,结果包含该列没有数据的实体实例。
事件和处理器
AttachEvent - BlurEvent - ComponentValueChangeEvent - DetachEvent - FocusEvent - OperationChangeEvent - validator
在 Jmix Studio 生成处理器桩代码时,可以使用 Jmix UI 组件面板的 Handlers 标签页或者视图类顶部面板的 Generate Handler 添加,也可以通过 Code → Generate 菜单(Alt+Insert / Cmd+N)生成。 |
validator
为组件添加 validator 实例。当值无效时,验证器需要抛出 ValidationException
异常。示例:
如果预定义的验证器不能满足需要,可以添加自定义的验证器实例:
@Install(to = "propertyFilter", subject = "validator")
private void propertyFilterValidator(String value) {
if (value != null && value.length() != 6)
throw new ValidationException("Zip must be of 6 digits length");
}