Проблема выбора вкладок в JSF icefaces - PullRequest
0 голосов
/ 29 ноября 2010

У меня есть одна вкладка, как показано ниже, в которой я хочу выбрать динамическую вкладку, используя привязку в Java.

<ice:panelTabSet var="currentTab" partialSubmit="true"  selectedIndex="#{viewBatchBean.tabSelectedIndex}"
            value="#{viewBatchBean.batch.batchConfigurationTabList}"
            tabChangeListener="#{viewBatchBean.showDefaultValueForTab}"
            binding="#{viewBatchBean.panelTabSetRef}">

здесь я устанавливаю индекс вкладки, как показано ниже.он устанавливает вкладку в соответствии с указанным индексом, но не фокусируется на ней.

1 Ответ

0 голосов
/ 29 ноября 2010

Заполнение панели TabSetRef.

//---

for(SomeObject tabConfig : batchConfigurationTabList){
   PanelTab panelTab = new PanelTab();
   // Setting appropriate values in panelTab
   panelTabSetRef.getChildren().add(panelTab);
}

//---

Извлечение компонента PanelTab из PanelTabSet и соответствующая его обработка.

List<UIComponent> panelTabs= panelTabSetRef.getChildren();

// Selecting tab to set focus

PanelTab focusTab = (PanelTab) panelTabs.get(tabSelectedIndex);
String tabId = focusTab.getId();

//---

Фокус можно установить на выбранной вкладке, как показано ниже, используя Java Script.

JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), "someJSMethodToSetFocus('someForm:"+tabId+"');");

Индекс вне связанного исключения повышен, потому что панель не была заполнена и выбирает дочерние элементы из нее. Придавать значение непосредственно как <ice:panelTabSet value="#{viewBatchBean.batch.batchConfigurationTabList}"/> заполняется, когда страница отображается соответственно. Так что вручную заполняем панель TabSetRef.

В более новой версии IceFaces атрибут tabIndex был добавлен в panelTabSet.

...