如何在Bean方法中将Primefaces选项卡作为UIComponent传递?

时间:2019-01-09 09:56:22

标签: primefaces jsf-2

我试图将Tab组件作为UIComponent传递给bean方法(针对我正在开发的某些权限问题),但是我正在获取TabView的实例而不是Tab。

我以Tab为例,但我尝试在p:outputLabel中调用相同的方法,并且收到UIComponent PanelGrid实例。

是否可以或当我将其作为标签使用时也需要传递ID?

我正在运行Primefaces 5.3。

<p:tabView id="myTabView">
    <p:tab id="tabOne" rendered="{myController.isUserHasView(component)}">
        ...
    </p:tab>
</p:tabView>

//Bean Method
public boolean isUserHasView(UIComponent component) {
    System.out.println(component);
    return false;
}

我希望将Tab作为UIComponent获取,但是我将获得其所有子级的TabView。

1 个答案:

答案 0 :(得分:0)

tab不是UIComponentdoes not have its own renderer),因此'component'变量不是指向选项卡,而是指向其父级tabview which is the real component and renders the tab。但是即使有可能,每次用户打开页面时都会创建一个新实例,因此通过“实例”进行检查是不合逻辑的(除非您希望从组件中检索ID)。因此,由于无论如何都应该使用类似id的名称,因此显式使用id是一件好事(至少是我使用的东西)。