Я использую GWT MVP, и я хотел бы обрабатывать события в столбцах DataGrid из Presenter. Из GWT DataGrid ShowCase...
// First name.
Column<ContactInfo, String> firstNameColumn =
new Column<ContactInfo, String>(new EditTextCell()) {
@Override
public String getValue(ContactInfo object) {
return object.getFirstName();
}
};
firstNameColumn.setSortable(true);
sortHandler.setComparator(firstNameColumn, new Comparator<ContactInfo>() {
@Override
public int compare(ContactInfo o1, ContactInfo o2) {
return o1.getFirstName().compareTo(o2.getFirstName());
}
});
dataGrid.addColumn(firstNameColumn, constants.cwDataGridColumnFirstName());
firstNameColumn.setFieldUpdater(new FieldUpdater<ContactInfo, String>() {
@Override
public void update(int index, ContactInfo object, String value) {
// Here I would like to call RPC methods
}
});
dataGrid.setColumnWidth(firstNameColumn, 20, Unit.PCT);
Вышеприведенный пример, этот код записывается на стороне View, и это просто пример. Как шаблон mvp, мне просто нужно вызвать запрос rpc для обновления базы данных. Это невозможно сделать в View, но я понятия не имею, как установить FieldUpdater из моего ведущего. Пожалуйста, помогите мне, как я могу понять это? Большое спасибо.
Это можно сделать двумя способами (MVP я или MVP II):
http://www.gwtproject.org/articles/mvp-architecture.html
Создайте setter
на вашем View
(т. setFieldUpdater(FieldUpdater<ContactInfo, String>)
), который принимает FieldUpdater
и добавляет его в столбец. Из Presenter
вы можете позвонить (при условии, что view
является ссылкой на ваш вид).
Ведущий:
view.setFieldUpdater(new FieldUpdater<ContactInfo, String>() {
@Override
public void update(int index, ContactInfo object, String value) {
// Make the RPC call
}
});
http://www.gwtproject.org/articles/mvp-architecture-2.html
Если у вас есть ссылка с вашего View
назад к вашему Presenter
. Затем вы можете вызвать функцию на своем Presenter
.
Вид:
firstNameColumn.setFieldUpdater(new FieldUpdater<ContactInfo, String>() {
@Override
public void update(int index, ContactInfo object, String value) {
getPresenter().onUpdate(info,value);
}
});