如何识别p:accordionPanel中控制器功能的选项卡?

时间:2014-12-10 15:33:41

标签: jsf primefaces

请参阅my previous question

我需要能够识别与p:accordionPanel中每个标签(或行)相关联的实体。例如。如果行对应于ID为1,2,3的实体,当我单击每个选项卡时,我想触发由使用该选项卡的ID的控制器处理的事件。 IOW,我需要每个选项卡和控制器之间的引用指针。

从我之前的帖子中可以看出,ID属性不起作用。如何在视图中的每个选项卡和控制器之间建立标识引用?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用accordionPanel的activeIndex属性,该属性是活动选项卡的索引。

<p:accordionPanel activeIndex="#{playgroundController.activeIndex}">
    <p:ajax event="tabChange" listener="#{playgroundController.onTabChange()}" />
    <p:tab title="Godfather Part I">
        <h:panelGrid columns="2" cellpadding="10">
            <h:outputText
                value="The story begins as Don Vito Corleone..." />
        </h:panelGrid>
    </p:tab>
    <p:tab title="Godfather Part II">
        <h:panelGrid columns="2" cellpadding="10">
            <h:outputText value="Francis Ford Coppola's legendary..." />
        </h:panelGrid>
    </p:tab>
    <p:tab title="Godfather Part III">
        <h:panelGrid columns="2" cellpadding="10">
            <h:outputText value="After a break of more than 15 years..." />
        </h:panelGrid>
    </p:tab>
</p:accordionPanel>

豆:

private String activeIndex = "";


public void onTabChange() {
    logger.debug("onTabChange : activeIndex : {}  ", activeIndex);
}

点击其中一个标签时点击:

09:38:55,822 DEBUG [PlaygroundController] onTabChange : activeIndex : 0  
09:38:56,625 DEBUG [PlaygroundController] onTabChange : activeIndex : 1  
09:38:57,426 DEBUG [PlaygroundController] onTabChange : activeIndex : 2