【问题标题】:Tab selection problem in JSF icefacesJSF icefaces 中的选项卡选择问题
【发布时间】:2010-11-29 06:56:45
【问题描述】:

我有一个选项卡设置如下,我想在其中使用 java 中的绑定选择动态选项卡。

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

这里我设置标签索引如下..

  panelTabSetRef.setSelectedIndex(0);

它根据给定的索引设置选项卡,但不设置焦点。

【问题讨论】:

    标签: java jsf icefaces


    【解决方案1】:

    填充 panelTabSetRef。

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

    从 PanelTabSet 中获取 PanelTab 组件并进行相应处理。

    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+"');");
    

    引发索引超出范围异常,因为面板尚未填充并从中获取子项。直接赋予价值 &lt;ice:panelTabSet value="#{viewBatchBean.batch.batchConfigurationTabList}"/&gt; 在相应地呈现页面时填充。所以手动填充 panelTabSetRef。

    在较新的 IceFaces 版本中,tabIndex 属性已添加到 panelTabSet。

    【讨论】:

    • 你给出的解决方案很好,但是当我使用 getChildren() 方法时,它给我 size = 1 而在我的 UI 中它是 6...所以它给我错误作为索引超出范围。 .
    • 在我的代码中,它动态地将焦点设置在选项卡上,但不刷新该选项卡..一旦我单击该选项卡,然后只有它刷新..代码太长,所以我不能发布它:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多