Set a value based on user input first

I was wondering if there’s a way to to check if the user enter a value in a field and then based on that input set another field automatically in the same table. For example, in Order Entity, there are order type and order_number. The user will choose the type from the list provided and according to the type chosen, a different number will be set automatically to the order_number.

Let me show it on the Customer entity and its name and email attributes.


public class CustomerEdit extends AbstractEditor<Customer> {

    @Inject
    private Datasource<Customer> customerDs;

    @Override
    public void init(Map<String, Object> params) {
        customerDs.addItemPropertyChangeListener(e -> {
            if (e.getProperty().equals("name")) {
                customerDs.getItem().setEmail(e.getItem().getName() + "@mail.com");
            }
        });
    }
}

Now when a user changes customer’s name, its email will be changed too.

Thanks a lot Konstantin, it worked perfectly for me!

I added the following but the studio always shows “can’t find symbol” complie error. Do I need to import any package?

@Inject
private Datasource<Customer> customerDs;

Hi Thonaslei,

you didn’t show us the compile error in detail so I just can guess.

You probably added that code snippet in the studio and not in the IDE.
For this you need to manage the import statements by your own.

For this given 2 lines of code the import statements are:

import javax.inject.Inject;
import com.haulmont.cuba.gui.data.Datasource;

… for the entity ‘Customer’ the import should be already exist.

CU
Steven

Hi,
Thank you. It works now.