过滤器实体类型参数的控件类型问题

我在过滤器里面定义了一个custom属性,参数类型是实体类型,我想在界面过滤器里面这个属性使用Lookup控件而不是下拉框,请问怎么设置?

将 inExp 设置为true 试试

设置了,弹出的是一个多选界面。不是系统默认的lookup,我需要PickerField单选的那种

目前支持对实体类型的参数单选支持两种控件,一种是 LookupPickerField,一种是PickerField。你是要哪一种。

另外要扩展也是可行的。
com.haulmont.cuba.gui.components.filter.Param,这个类是平台默认的用于维护参数值的一个Bean,可以覆盖这个类的 createEntityLookup 方法来实现自己的逻辑。

需要PickerField这个控件,需要我自己扩展吗?

在关联属性上定义 @Lookup 注解,注解的 type 属性设置为 LookupType.SCREEN

参考源码:
image

我说了我是custom的属性,我没地方设置property,怎么办?
看了代码,如果property为空他就取不到type,是通过persistenceManager.useLookupScreen去判断是否使用lookupScreen,不知道这个有没有什么地方可以设置。

在实体属性上定义注解。比如表格显示的实体是 A,它有一个关系类型的属性 P,按 A.P 进行过滤, 要定义参数选择组件为 PickField ,就给 A.P 这个实体属性上添加注解,@Lookup(type=LookupType.SCREEN)。 你先试一下。看源码应该是这样。

我明白您的意思,但是您说的只能在property 属性上生效。比如
<property name=“sampleOrderItem.sample” caption=“smaple”
但是我现在是custom
<custom name=“sampleOrderItem.sample.trustor” paramClass=“net.weborld.lims.entities.trusteeship.Trustor” caption=“Trustor”
您贴的源代码图表里面的property是null,所以不会去实体上去找@Lookup

那就把 lookup 注解定义到实体属性类型对应的实体上。

不明白您意思,lookup注解无法到类上只能定义到Field上。什么叫“定义到实体属性类型对应的实体上”?

抱歉,看错了。我再看看

看来目前只能采用扩展平台 Bean 的方式了。 在自己的Bean中根据需要创建自定义的参数选择组件或者调用默认的创建组件方法。主要逻辑参考平台的实现。
image

1 个赞

哭了,这地方还真不好扩展。提个建议吧,最好可以在过滤器里自己设置控件类型,像Property这种一配置就是全局的其实也不好用。因为不同的场景下其实可能会用下拉框,也可能要弹出Screen,让用户可以自己设置最方便了。

你目前这个需求扩展一下平台Bean就可以实现。我们反馈一下看看这块能不能再增加一些配置项。

使用 实体统计功能临时解决了这个问题,还是建议可以直接在XML里设置比较方便!