【问题标题】:Change tab on button click without update tabView在不更新 tabView 的情况下单击按钮更改选项卡
【发布时间】:2015-09-29 13:23:05
【问题描述】:

我想通过单击命令按钮来更改选项卡。我正在控制我的 bean 上的 activeIndex 并对 tabView 组件进行更新。一切正常。

我的问题是我想更改 activeIndex 而无需对 tabView 进行更新,因为该组件的更新有点慢。

是否可以通过单击按钮来更改选项卡,而无需更新?

这是我的实际代码。

TabView 组件

 <p:tabView id="tvFoo" dynamic="true" activeIndex="#{fooBean.activeIndex}">


       <p:tab title="Title" id="someTab">                                         
          <ui:include src="someTabName.xhtml" />          
       </p:tab>

       <p:tab title="Title2" id="anotherTab">                                         
          <ui:include src="anotherTabName.xhtml" />       
       </p:tab>

</tabView>

在 someTabName.xhtml 中

<p:commandButton value="go to anotherTab"  actionListener="#{fooBean.tabChange('anotherTabName')}" />

fooBean,控制选项卡的变化

public void tabChange(String tabId) {    
        switch (tabId) {    
        case "anotherTabName":                                      
            activeIndex = 2;
            RequestContext.getCurrentInstance().update("tvFoo"); //here is the line that I don't want to call                    
        break;
    }

我可以删除那行吗,RequestContext.getCurrentInstance().update("tvFoo");?当然,如果只是删除,选项卡不会改变。

要恢复,基本上我想更改打开的选项卡。我认为我可以手动调用changeTab事件来实现这一点,但我不知道该怎么做。

【问题讨论】:

    标签: jsf primefaces tabview


    【解决方案1】:

    为什么不通过命令按钮更新 tabview 组件? 我认为您必须在某处进行更新,否则,tabview 应该如何注意到更改?而且,据我所知,更新功能一点也不慢。

    要获取 tabview 的当前索引,您可以使用 Faces Context:

    TabView tabView = FacesContext.getCurrentInstance().getViewRoot().findComponent(aComponentId); 
    

    tabView 上,您可以单独获取和设置活动标签。

    我希望这会有所帮助,祝你好运!

    【讨论】:

    • 感谢您的宝贵时间。进行更新的问题在于该组件上有一些“重”选项卡,而对整个组件进行更新只是为了更改选项卡似乎有点奇怪,对吧?我可以进行不重新加载所有选项卡的更新吗?
    • 您可以在要直接查询的每个组件上设置一个 id - &lt;p:tab&gt; 项也是如此。这意味着,您可以在 &lt;p:tab id="tabId" ... /&gt; ...&lt;p:commandButton update="tabId" 这样的命令按钮中进行更新,它只会刷新命名的选项卡。
    • 我正在尝试仅按 ID 更新选项卡。但是什么也没发生,只有当我更新整个 tabView 时,选项卡才会更改为索引 2。
    • 你有静态或动态标签数量吗?
    • 是的,是静态数字
    【解决方案2】:

    您是否尝试过使用向导组件?我相信您正在寻找的行为类似于这个 primefaces 向导。

    http://www.primefaces.org/showcase/ui/panel/wizard.xhtml

    【讨论】:

    • 对不起,向导不是我想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 2011-11-02
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多