#jsf #primefaces #tabview
#jsf #простые интерфейсы #tabview
Вопрос:
У меня есть страница с именем Tabview1, которая состоит из tabview.
Tabview1.xhtml:
<p:tabView>
<p:tab title="1">
<ui:include src="/Apanel.xhtml"/>
</p:tab>
<p:tab title="2">
</p:tab>
<p:tab title="3">
</p:tab>
</p:tabView>
Я хочу перенаправить на страницу Tabview2.xhtml, если щелкнуть вкладку с именем 2.
Tabview2.xhtml:
<p:tabView>
<p:tab title="1">
</p:tab>
<p:tab title="2">
<ui:include src="/Bpanel.xhtml"/>
</p:tab>
<p:tab title="3">
</p:tab>
</p:tabView>
Кто может мне помочь?
Ответ №1:
Tabview создает список с одним элементом для каждой вкладки. Каждый <li>
содержит <a href="#j_idtXXX">
. Создайте скрипт на своем сайте, который изменит эти ссылки на Tabview2.xhtml. Например, если вы установите идентификатор вашего tabview в «tabview»:
jQuery("#tabview ul a").first().attr("href", /MyPortal/Tabview2.jsf?tab=0);
Это приведет к тому, что первая вкладка приведет к новой странице, и выберите нужную вкладку на этой странице, если вы настроили параметр view и activeIndex="#{controllerClass.activeIndex}"
установили в tabview.
Сейчас я спешу, поэтому у меня было время написать только короткий пример, но если у вас есть некоторые навыки работы с javascript, это не должно быть слишком сложно.
Комментарии:
1. Ваше решение не работает. Я могу изменить атрибут ‘href’ в элементах ‘a’, содержащихся в элементах li. Но щелчок не переводит пользователя на новую страницу. Действие по умолчанию должно быть переопределено через JS, чтобы не запускаться.
Ответ №2:
<p:tabView>
<p:tab title="Title1">
<p:panel>
<ui:include src="tabView1.xhtml" />
</p:panel>
</p:tab>
<p:tab title="Title 2">
<p:panel>
<ui:include src="tabView2.xhtml" />
</p:panel>
</p:tab>
</p:tabView>