Я работаю над проектом, используя Primefaces 3.5 и JSF2.1 (Mojarra).
Я создал простые лица <p:tabView id="tabsVw" dynamic="false">
с двумя вкладками внутри, и каждая вкладка имеет таблицу данных простых лиц.
<h:form>
<p:tabView dynamic="false">
<p:ajax event="tabChange" listener="#{tstTab.onDtlTabChanged}" />
<p:tab title="tab1">
<p:dataTable value="#{tstTab.list1}" var="v1">
<p:column>
<h:outputText value="#{v1}"/>
</p:column>
</p:dataTable>
</p:tab>
<p:tab title="tab2">
<p:dataTable value="#{tstTab.list2}" var="v2">
<p:column>
<h:outputText value="#{v2}"/>
</p:column>
</p:dataTable>
</p:tab>
</p:tabView>
</h:form>
и внутри bean-компонента (просмотр в области видимости)
@ManagedBean
@ViewScoped
public class TstTab {
private List<String> list1;
private List<String> list2;
public TstTab(){
list1 = new ArrayList<String>();
list2 = new ArrayList<String>();
list1.add("List 1 - Str 1");
list1.add("List 1 - Str 2");
list1.add("List 1 - Str 3");
list1.add("List 1 - Str 4");
list1.add("List 1 - Str 5");
list2.add("List 2 - Str 1");
list2.add("List 2 - Str 2");
list2.add("List 2 - Str 3");
list2.add("List 2 - Str 4");
list2.add("List 2 - Str 5");
}
public void onDtlTabChanged(TabChangeEvent event) {
System.out.println("000000000000000000");
}
public List<String> getList1() {
System.out.println("11111111111111");
return list1;
}
public List<String> getList2() {
System.out.println("222222222222222222");
return list2;
}
}
теперь проблема заключается в том, что когда вы запускаете приложение и пытаетесь перемещаться (переключаться) между вкладками, но я вижу, что onDtlTabChanged
вызывается после вызова геттеров, так что это большая проблема.
и если изменить tabView
со статического на динамическое, то поведение будет случайным, другими словами вызов события изменения происходит где-то в середине геттеров.
Заранее спасибо.