Фильтр строки таблицы в lookupField

Здравствуйте, хочу фильтровать строки таблицы, выбирая значение в LookUpField.
image
но фильтр не отработает

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/screen/window.xsd"
        xmlns:c="http://schemas.haulmont.com/cuba/screen/jpql_condition.xsd"
        caption="msg://usersBrowse.caption"
        focusComponent="usersesTable"
        messagesPack="com.company.edm.web.screens.users">
    <data readOnly="true">
        <collection id="departmentsDc" class="com.company.edm.entity.Department" view="_base">
            <loader id="departmentsDl">
                <query>
                    <![CDATA[select e from edm_Department e]]>
                </query>
            </loader>
        </collection>
        <collection id="positionsesDc" class="com.company.edm.entity.Positions" view="_base">
            <loader id="positionsesDl">
                <query>
                    <![CDATA[select e from edm_Positions e]]>
                </query>
            </loader>
        </collection>
        <collection id="usersesDc"
                    class="com.company.edm.entity.Users">
            <view extends="_local" systemProperties="true">
                <property name="department" view="_local"/>
                <property name="position" view="_local"/>
                <property name="telephone" view="_local"/>
                <property name="status" view="_local"/>
            </view>
            <loader id="usersesDl">
                <query>
                    <![CDATA[select e from edm_Users e]]>
                </query>
            </loader>
        </collection>

    </data>
    <dialogMode height="600"
                width="800"/>
    <layout expand="usersesTable"
            spacing="true">
        <hbox width="100%" spacing="true">
            <tabSheet id="filterTabSheet">
                <tab id="defaultFilterTab" caption="Фильтр" margin="true" spacing="true">
                    <hbox spacing="true">
                        <lookupField
                                id="departmentLookupField"
                                optionsContainer="departmentsDc"
                                caption="Департамент"
                                nullOptionVisible="true"
                        />
                        <lookupField
                                id="positionsLookupField"
                                optionsContainer="positionsesDc"
                                caption="Должность"
                                nullOptionVisible="true"
                        />
                        <button align="BOTTOM_CENTER"
                                id="clearFilterBtn"
                                action="usersesTable.clearFilter"
                        />
                    </hbox>
                </tab>
                <tab id="extendedFilter" caption="Свой фильтр" margin="true" spacing="true">
                    <filter id="filter"
                            width="100%"
                            borderVisible="false"
                            collapsable="false"
                            collapsed="false"
                            applyTo="usersesTable"
                            dataLoader="usersesDl">
                        <properties include=".*"/>
                    </filter>
                </tab>
            </tabSheet>
        </hbox>
        <groupTable id="usersesTable"
                    width="100%"
                    dataContainer="usersesDc" align="TOP_CENTER">
            <actions>
                <action id="create" type="create"/>
                <action id="edit" type="edit"/>
                <action id="remove" type="remove"/>
                <action id="clearFilter"
                        caption="Очистить"
                        icon="ERASER"/>
            </actions>
            <columns>
                <column id="fio"/>
                <column id="department"/>
                <column id="position"/>
                <column id="telephone"/>
                <column id="login"/>
                <column id="documents"/>
                <column id="date_reg"/>
                <column id="status"/>
            </columns>
            <rowsCount/>
            <buttonsPanel id="buttonsPanel"
                          alwaysVisible="true">
                <button id="createBtn" action="usersesTable.create"/>
                <button id="editBtn" action="usersesTable.edit"/>
                <button id="removeBtn" action="usersesTable.remove"/>
            </buttonsPanel>
        </groupTable>
        <hbox id="lookupActions" spacing="true" visible="false">
            <button action="lookupSelectAction"/>
            <button action="lookupCancelAction"/>
        </hbox>
    </layout>
</window>
    public class UsersBrowse extends StandardLookup<Users> {
    @Inject
    protected LookupField<Department> departmentLookupField;
    @Inject
    protected LookupField<Positions> positionsLookupField;
    @Subscribe("clearFilterBtn")
    public void onClearFilterBtnClick(Button.ClickEvent event) {
        departmentLookupField.setValue(null);
        positionsLookupField.setValue(null);
    }
}

Добрый день.

Посмотрите на этот раздел документации, в нем описано, как использовать UI компоненты для фильтрации данных без использования компонента Filter.

Глеб.

Спасибо за быстрый ответ, оказывается часть кода осталась, ниже дополнил. Делал из примера https://github.com/cuba-platform/cuba-petclinic. Тут работает а у меня нет, может я что то упускаю подскажите пожалуйста.

<data readOnly="true">
    <collection id="departmentsDc" class="com.company.edm.entity.Department" view="_base">
        <loader id="departmentsDl">
            <query>
                <![CDATA[select e from edm_Department e]]>
            </query>
        </loader>
    </collection>
    <collection id="positionsesDc" class="com.company.edm.entity.Positions" view="_base">
        <loader id="positionsesDl">
            <query>
                <![CDATA[select e from edm_Positions e]]>
            </query>
        </loader>
    </collection>
    <collection id="usersesDc"
                class="com.company.edm.entity.Users">
        <view extends="_local" systemProperties="true">
            <property name="department" view="_local"/>
            <property name="position" view="_local"/>
            <property name="telephone" view="_local"/>
            <property name="status" view="_local"/>
        </view>
        <loader id="usersesDl">
            <query>
                <![CDATA[select e from edm_Users e]]>
                <condition>
                    <and>
                        <c:jpql>
                            <c:where>e.department = :component_departmentLookupField</c:where>
                        </c:jpql>
                        <c:jpql>
                            <c:where>e.position = :component_positionsLookupField</c:where>
                        </c:jpql>
                    </and>
                </condition>
            </query>
        </loader>
    </collection>
</data>
<dialogMode height="600"
            width="800"/>
<layout expand="usersesTable"
        spacing="true">
    <hbox width="100%" spacing="true">
        <tabSheet id="filterTabSheet">
            <tab id="defaultFilterTab" caption="Фильтр" margin="true" spacing="true">
                <hbox spacing="true">
                    <lookupField
                            id="departmentLookupField"
                            optionsContainer="departmentsDc"
                            caption="Департамент"
                            nullOptionVisible="true"
                    />
                    <lookupField
                            id="positionsLookupField"
                            optionsContainer="positionsesDc"
                            caption="Должность"
                            nullOptionVisible="true"
                    />
                    <button align="BOTTOM_CENTER"
                            id="clearFilterBtn"
                            action="usersesTable.clearFilter"
                    />
                </hbox>
            </tab>
            <tab id="extendedFilter" caption="Свой фильтр" margin="true" spacing="true">
                <filter id="filter"
                        width="100%"
                        borderVisible="false"
                        collapsable="false"
                        collapsed="false"
                        applyTo="usersesTable"
                        dataLoader="usersesDl">
                    <properties include=".*"/>
                </filter>
            </tab>
        </tabSheet>
    </hbox>
    <groupTable id="usersesTable"
                width="100%"
                dataContainer="usersesDc" align="TOP_CENTER">
        <actions>
            <action id="create" type="create"/>
            <action id="edit" type="edit"/>
            <action id="remove" type="remove"/>
            <action id="clearFilter"
                    caption="Очистить"
                    icon="ERASER"/>
        </actions>
        <columns>
            <column id="fio"/>
            <column id="department"/>
            <column id="position"/>
            <column id="telephone"/>
            <column id="login"/>
            <column id="documents"/>
            <column id="date_reg"/>
            <column id="status"/>
        </columns>
        <rowsCount/>
        <buttonsPanel id="buttonsPanel"
                      alwaysVisible="true">
            <button id="createBtn" action="usersesTable.create"/>
            <button id="editBtn" action="usersesTable.edit"/>
            <button id="removeBtn" action="usersesTable.remove"/>
        </buttonsPanel>
    </groupTable>
    <hbox id="lookupActions" spacing="true" visible="false">
        <button action="lookupSelectAction"/>
        <button action="lookupCancelAction"/>
    </hbox>
</layout>

В PetClinic данные загружаются программно в коде контроллера и перед загрузкой проставляются значения параметров, например:

private void loadEvents() {
        visitsCalendarDl.setParameter("visitStart", calendar.getStartDate());
        visitsCalendarDl.setParameter("visitEnd", calendar.getEndDate());
        visitsCalendarDl.load();
}

В качестве альтернативы такому подходу, посмотрите на DataLoadCoordinator.