Как передать Primefaces Tab как UIComponent в метод бина? - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь передать компонент Tab методу bean-компонента как UIComponent (для некоторых разрабатываемых проблем с разрешениями), но вместо Tab получаю экземпляр TabView.

Я использую Tab в качестве примера, но я попытался вызвать тот же метод в p: outputLabel, и я получаю экземпляр UIComponent PanelGrid.

Возможно или мне нужно передать идентификатор тоже, когда он был в виде табуляции?

Я использую 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 голосов
/ 09 января 2019

A tab не является UIComponent ( не имеет своего собственного средства визуализации ), поэтому переменная 'component' указывает не на вкладку, а на ее родительский элемент tabview, который является реальным компонентом и отображает вкладку . Но даже если бы это было возможно, новый экземпляр будет создаваться каждый раз, когда пользователь открывает страницу, поэтому проверка через «экземпляр» не логична (если только вы не хотите получить идентификатор из компонента). Так как вы все равно должны использовать что-то вроде идентификатора, использование явного идентификатора - хорошая вещь (и по крайней мере то, что я использую).

...