Specify parameters for AbstractWindow based on CustomDatasource

Hi:
I’ve written a Custom Datasource that takes two String parameters (lname and postalCode). I have declared the custom datasource in an AbstractWIndow:


<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
        caption="Possible Bad Debt "
        class="com.paslists.rade.web.badDebtList.Baddebtlist"
        focusComponent="btnAccept"
        messagesPack="com.paslists.rade.web.badDebtList">
    <dsContext>
        <collectionDatasource id="badDebtDs"
                              allowCommit="false"
                              class="com.paslists.rade.entity.BadDebt"
                              datasourceClass="com.paslists.rade.gui.BadDebtDatasource"/>
    </dsContext>
        .
        .
        .

My openWindow call passes the parameters:


            openWindow("rade$badDebtList",
                            WindowManager.OpenType.DIALOG,
                            ParamsMap.of("lname", selected.getLname(), "postalCode", selected.getZip()))

How do I pass the current value of lname and postalCode to the datasource?

I may have figured this out. I needed to override init(params):


public class Baddebtlist extends AbstractWindow {

    @Inject
    private BadDebtDatasource badDebtDs;

    @Override
    public void init(Map<String,Object> params)
    {
        super.init(params);
        getDialogOptions().setModal(true);
        WindowParams.DISABLE_AUTO_REFRESH.set(params, true);
        badDebtDs.refresh(params);
    }
}

This seems to work. Is there a better way?

I think it’s a normal way. Custom datasource class is decoupled from the screen and can be used in different screens. So you have to pass parameters to it explicitly.

Thanks!