В моем приложении, когда пользователь нажимает на какой-либо элемент, я использую <p:tabView>
внутри <p:dialog>
, чтобы показать детали этого элемента. В зависимости от типа элемента, некоторые будут иметь дополнительные вкладки. Это похоже на следующее:
<p:dataTable value="#{mrBean.items}" var="item" >
<p:ajax event="rowSelect" listener="#{mrBean.showItemDetails}" update="itemDetails" oncomplete="eventDialog.show();" />
...
</p:schedule>
<p:dialog id="detailsDlg" onHide="detailsTab.select(0);">
<p:tabView effect="fade" widgetVar="detailsTab" id="itemDetails">
<tab title="General details">
...
</tab>
<tab rendered="#{mrBean.item.type == 'Book'}" title="Author">
...
</tab>
</p:tabView>
</p:dialog>
Рассмотрим ситуацию, когда я нажимаю Book
и перехожу на вкладку Author
, чтобы просмотреть сведения об авторе. Теперь, если я закрою диалоговое окно, не переключаясь обратно на вкладку General details
, и нажму некоторые элементы, отличные от Book
(что означает, что у них нет вкладки Author
), мой диалог все еще остается на невидимая Author
вкладка. Даже если я попытаюсь нажать на General tab
, он больше не будет отображаться.
UPDATE:
Я попытался использовать клиентский API <p:tabView>
и <p:dialog>
и выполнить вызов detailsTab.select(0)
в атрибуте onHide
<p:dialog>
. Ситуация немного лучше. Однако 1-й элемент, который не является Book
, который я нажимаю после нажатия Book
, будет испытывать ту же ситуацию, что и выше. Начиная со 2-го пункта, все снова в порядке. Есть ли способы заставить его работать сразу?
Буду очень признателен, если вы покажете мне, как я могу решить эту проблему.