Изменить вкладку из бэк-компонента с использованием JSF 2.0
Я хочу изменить вкладку с бэк-бина, как я могу это сделать?
<h:form id=form>
<p:growl id="growl" showDetail="true" />
<p:tabView id="tabView" dynamic="true" widgetVar="detailsTab">
<p:ajax event="tabChange" listener="#{bean.onTabChange}" update=":form:growl"/>
<p:tab title="Tab1" id="emp">
<h:panelGrid columns="2" cellpadding="10">
</h:panelGrid>
</p:tab>
<p:tab title="Tab 2 " id="schedule1">
<h:panelGrid columns="2" cellpadding="10">
</h:panelGrid>
</p:tab>
<p:tab title="Tab 3" id="schedule2">
<p:schedule value="#{bean.eventModel}" slotMinutes="15"
resizable="false" widgetVar="schdule" initialDate="#{bean.dates}" draggable="true" styleClass="#{bean.selDates}"
>
<p:ajax event="dateSelect" listener="#{bean.onDateSelect}"
update="dialogBox" oncomplete="patScheduleDialog.show()"/>
<p:ajax event="eventSelect" listener="#{bean.onEventSelect}"
update="dialogBox :form:growl" oncomplete="#{bean.pevent}"/>
<p:ajax event="eventMove" listener="#{bean.onEventMove}"
update="dialogBox, :form:growl" />
</p:schedule>
<p:dialog id="dialogBox" header="Patient's Appointment Details" widgetVar="patScheduleDialog" resizable="true"
showEffect="explode" hideEffect="explode">
<h:panelGrid id="eventDetails" columns="2">
<h:outputLabel for="title" value="Title:" />
<p:inputText id="title" value="#{bean.event.title}" required="true"/>
<h:outputLabel for="from" value="From:" />
<p:inputMask id="from" value="#{bean.event.startDate}" mask="99/99/9999">
<f:convertDateTime pattern="dd/MM/yyyy" />
</p:inputMask>
<h:outputLabel for="to" value="To:" />
<p:inputMask id="to" value="#{bean.event.endDate}" mask="99/99/9999">
<f:convertDateTime pattern="dd/MM/yyyy" />
</p:inputMask>
<h:outputLabel for="allDay" value="All Day:" />
<h:selectBooleanCheckbox id="allDay" value="#{bean.event.allDay}" />
<p:commandButton type="reset" value="Reset" />
<p:commandButton value="Save" actionListener="#{bean.addEvent}" oncomplete="schdule.update();dialogBox.hide();"/>
</h:panelGrid>
</p:dialog>
</p:tab>
</p:tabView>
public void onEventSelect(ScheduleEntrySelectEvent selectEvent){
// what should I need to do here to set "Tab 2" if click on any event.
}
1 ответ
Во-первых, вам нужно установить activeIndex
атрибут вашего <p:tabView>
, как это: <p:tabView activeIndex="#{bean.selectedTab}">
, Это Integer
,
Во-вторых, в вашем методе bean-компонента, когда вы хотите изменить активную вкладку, установите selectedTab
на вкладку, которую вы хотите выбрать.
В-третьих, не забудьте обновить <p:tabView>
,
Вы также можете сделать это с помощью JavaScript. Просто установите widgetVar
атрибут вашего <p:tabView>
, как это: <p:tabView widgetVar="myTabView">
,
Затем используйте функцию JavaScript myTabView.select(tabIndex)
, где tabIndex
это индекс вкладки, которую вы хотите выбрать.
Вы можете сделать это на любом событии JavaScript, например: <p:commandButton oncomplete="myTabView.select(1)" />
выберет вторую вкладку после завершения действия commandButton.
Обязательно прочитайте документы PrimeFaces.
- Вы можете использовать свойство привязки в теге p:tabView.
<p:tabView id="tabGeneral" binding="#{Bean.tabView}" dynamic="true">
- Создайте объект Tabview в своем компоненте.
частный TabView tabView;
public TabView getTabView() { return tabView; } public void setTabView(TabView tabView) { this.tabView = tabView; }
- Установите int как индекс в вашем просмотре вкладок.
tabView.setActiveIndex(0);
- Обновите tabView.
RequestContext.getCurrentInstance().update("tabGeneral");