我使用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");
}
当我切换标签时,不会调用此方法。 我不知道为什么。 可以给我一些帮助吗? 感谢
答案 0 :(得分:0)
你的Bean监听器应该是
public void onChange(TabChangeEvent event){
System.out.println("ok");
}
seconde问题与使用ui相关:include包含一个变量(tab),在渲染阶段之前不应该是可用的,ui:include标记是在恢复阶段构建的。
答案 1 :(得分:0)
如果您使用默认的类名来引用您的managedBean,那么在您的视图页面中,您必须设置mainBean
而不是MainBean
。您已设置listener="#{MainBean.onChange}"
,因此您必须定义一个名为public void onChange(TabChangeEvent)
的方法,该方法将在标签更改时调用。
注意:我们的意思是通过tabChange在tabView中选择另一个标签的事件,在您的情况下,您似乎只有一个标签,尝试添加另一个。