我使用的是支持动态选项卡和事件侦听器的p:tabView。看起来像这样:名为. xhtml的
<h:form id="pageFm">
<p:tabView scrollable="true" value="#{MainBean.pagelist}" var="tab" activeIndex="#{MainBean.activeindex}" id="tabview" dynamic="true" cache="false">
<p:ajax event="tabChange" listener="#{MainBean.onChange}" />
<p:tab title="#{tab.pagename}" closable="true">
<ui:include src="#{tab.pagepath}" />
</p:tab>
</p:tabView>
</h:form>
ManageBean:
public void onChange(TabChangeEvent event){
System.out.println("ok");
}
切换制表符时,不会调用此方法。我不知道为什么。能给我一些帮助吗?由于
如果您使用默认的类名来引用您的managedBean,那么在视图页面中您必须设置mainBean
而不是MainBean
。你已经设置了listener="#{MainBean.onChange}"
,所以你必须定义一个叫做public void onChange(TabChangeEvent)
的方法,它将在标签改变时被调用。
注意:我们的意思是tabChange在tabView中选择另一个选项卡的事件,在你的情况下,似乎你只有一个选项卡,尝试添加另一个
你的Bean Listener应该是
public void onChange(TabChangeEvent event){
System.out.println("ok");
}
第二个问题与ui:include与变量(tab)的使用有关,该变量在呈现阶段之前不应该可用,ui:include标记是在恢复阶段构建的。