В компоненте простых лиц TabView на tabChange я хочу сделать ajax-вызов для обновления данных bean-компонента в bean-компоненте, который затем необходимо обработать с помощью javascript (некоторые диаграммы).
Проблема, с которой я сталкиваюсь, заключается в том, что данные корректно обновляются с помощью моего вызова ajax, но javascript, использующий данные, извлекается до того, как он был обновлен вызовом ajax.
Это простой компонент с ajax-вызовом для события tabChange.
<p:tabView>
<p:ajax event="tabChange" listener="#{bean.onTabChange}" />
<p:tab title="Tab 1" id="tab1">
//chart1
</p:tab>
<p:tab title="Tab 2" id="tab2">
//chart2
</p:tab>
<p:tab title="Tab 3" id="tab3">
//chart3
</p:tab>
</p:tabView>
Это JavaScript:
function renderTheChart(tabIndex) {
var categories= [];
var categories= [];
<ui:repeat var="data" value="#{bean.dataList}">
categories[categories.length] = "#{data.id}";
values[values.length] = #{data.value};
</ui:repeat>
renderChart(values, categories, tabIndex);
}
Чтобы узнать, когда вызывать javascript для обновления компонента, я попробовал обратный вызов на стороне клиента.
<p:tabView onTabChange="handleTabChange(event, index)">
JavaScript:
function handleTabChange(event, index) {
renderTheChart(index);
}