У меня довольно простой и понятный вопрос.
Есть ли способ, как обнаружить изменения в dataTable?
Допустим, у меня есть таблица данных, использующая нумерацию страниц. И теперь, когда я перехожу со страницы 1 на страницу 2, мне нужно обнаружить это событие и обновить компонент gMap на той же странице (мне нужен gMap, чтобы обновить свою dataModel из резервного компонента). Я пытался использовать параметр обновления, но, как упоминается в документации PF, он устарел и не работал.
Я могу обновить gMap, вручную нажимая кнопку p:, но мне нужно сделать это автоматически после изменения таблицы данных.
Возможно, есть решение, использующее javascript и привязывающий датируемый виджет к какому-либо действию, но я действительно не знаю: (
Заранее спасибо за любую помощь
UPDATE
Мой метод инициализации LazyDataMethod:
private LazyDataModel<Poi> lazyModel;
private void initializeLazyModel() {
lazyModel = new LazyDataModel<Poi>() {
@Override
public List<Poi> load(int first, int pageSize, String sortField, boolean sortOrder, Map<String, String> filters) {
List<Poi> data = service.getPoisLazily(first, pageSize, sortField, sortOrder, filters);
pois = data;
createMapForPOIs(pois);
return data;
}
};
lazyModel.setRowCount(getNumberOfRows());
}
Далее есть только метод получения / установки для LazyDataModel:
public LazyDataModel<Poi> getLazyModel() {
return lazyModel;
}
public void setLazyModel(LazyDataModel<Poi> lazyModel) {
this.lazyModel = lazyModel;
}
В pois.xhtml у меня есть объявление данных следующим образом:
<p:dataTable update="formMap:map" id="tablePois" var="poi" value="#{poiController.lazyModel}" lazy="true"
paginator="true" rows="10" paginatorPosition="bottom"
selection="#{poiController.poi}" rowSelectListener="#{poiController.showPoi}" selectionMode="single"
paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15,30,50">
<p:column>
<h:outputText value="#{poi.name}" />
</p:column>
</p:dataTable>
Итак, на данный момент я бы хотел использовать
RequestContext context = RequestContext.getCurrentInstance();
context.addPartialUpdateTarget("form:gMapId");
как предложено @spauny. Но не знаю, куда в бобе положить его.