Изменить вкладку из резервного компонента с помощью 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.


    }

person Java    schedule 13.09.2012    source источник


Ответы (2)


Во-первых, вам нужно установить атрибут activeIndex вашего <p:tabView>, например: <p:tabView activeIndex="#{bean.selectedTab}">. Это Integer.

Во-вторых, в вашем методе компонента всякий раз, когда вы хотите изменить активную вкладку, установите 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.

person RinaldoDev    schedule 13.09.2012
comment
Второй подход сначала не работал у меня. Мне пришлось переписать его так: oncomplete=PF('myTabView').select(1) - person Fabio B.; 03.05.2018

  1. Вы можете использовать свойство привязки в теге p:tabView.
<p:tabView id="tabGeneral" binding="#{Bean.tabView}" dynamic="true">
  1. Создайте объект Tabview в своем компоненте.

приватный TabView tabView;

public TabView getTabView() {
  return tabView;
}

public void setTabView(TabView tabView) {
  this.tabView = tabView;
}
  1. Установите int как индекс в вашей вкладке.
tabView.setActiveIndex(0);
  1. Обновить вкладкуView.
RequestContext.getCurrentInstance().update("tabGeneral");
person PauRibes    schedule 26.02.2020