我想在tabClose和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传递它?
答案 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主页,它应该有效。
修改强>
经过测试 - 有效。