动态手风琴面板在ajax中传递变量

时间:2013-12-02 09:36:12

标签: ajax jsf primefaces

我想在tabClos​​e和tabChange上传递变量到bean方法 - 我想传递我单击的选项卡的索引。

<p:accordionPanel id="layerListAccordionPanel" multiple="true" activeIndex="#{layersModelMock.activeIndex}" value="#{layersModelMock.layerCategories}" var="category">
    <p:ajax event="tabClose" listener="#{layersController.deselectCategory(category.id)}" />
    <p:ajax event="tabChange" listener="#{layersController.selectCategory(category.id)}" />

    <p:tab id="layerPanel" title="#{category.name}" closable="true">
        Test
    </p:tab>
</p:accordionPanel>

当我测试上面的代码时,我总是传递'0'。我不知道如何获取选项卡的索引并通过ajax传递它?

1 个答案:

答案 0 :(得分:0)

Primefaces Showcase可以看出,您可以将标签更改用作bean中的事件

 public void onTabClose(TabCloseEvent event) {  
    deselectCategory(event.getTab().getId());
}  

 public void onTabChange(TabChangeEvent event) {  
    selectCategory(event.getTab().getId());
}  

您需要相应地调整您的XHTML。

<p:accordionPanel id="layerListAccordionPanel" multiple="true" activeIndex="#{layersModelMock.activeIndex}" value="#{layersModelMock.layerCategories}" var="category">
    <p:ajax event="tabClose" listener="#{layersController.onTabChange}" />
    <p:ajax event="tabChange" listener="#{layersController.onTabClose}" />

    <p:tab id="#{category.id}" title="#{category.name}" closable="true">
        Test
    </p:tab>
</p:accordionPanel>

我自己没有测试过,但根据Primefaces主页,它应该有效。

修改

经过测试 - 有效。