primefaces 5.0动态制表符无法调用tabchange

时间:2014-06-19 16:46:23

标签: java jsf primefaces

我使用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");
}

当我切换标签时,不会调用此方法。 我不知道为什么。 可以给我一些帮助吗? 感谢

2 个答案:

答案 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中选择另一个标签的事件,在您的情况下,您似乎只有一个标签,尝试添加另一个