【问题标题】:Dynamically Disable/Enable of p:tab in p:accordionPanel在 p:accordionPanel 中动态禁用/启用 p:tab
【发布时间】:2013-04-22 13:08:38
【问题描述】:

我只希望动态启用或禁用单个选项卡(而不是整个手风琴面板)。 我尝试了以下方法,这是我的代码:

index.xhtml

<p:accordionPanel id="accordionPanelId" widgetVar="accordionPanelWidget">
   <p:tab id="tab1" title="First Tab">
       <h:outputText value="Contents of Tab1"/>
       <h:form>
         <p:commandButton value="Enable Tab2" action="#{tabBean.buttonAction}" update=":accordionPanelId:tab2"/>
       </h:form>
   </p:tab>

   <p:tab id="tab2" title="Second Tab" disabled="#{tableBean.disableTab}">
      <h:outputText value="Contents of Tab2"/> 
   </p:tab>
</p:accordionPanel>

TabBean.java

@ManagedBean
@ViewScoped
public class TabBean implements Serializable {

    private boolean disableTab=true;

    public boolean isDisableTab() {
        return disableTab;
    }

    public void setDisableTab(boolean disableTab) {
        this.disableTab = disableTab;
    }

    public void buttonAction()
    {
        disableTab = false;
    }

}

通过上述方法,Tab2 的内容正在显示,但 Tab Header 仍然冻结, 可能这不是实现这一目标的上帝方法...... 请提出任何其他方式或对此方法的更改。

编辑:如果我按如下方式更新整个 Accordion 面板,上述方法可以正常工作:

<p:commandButton value="Enable Tab2" action="#{tabBean.buttonAction}" update=":accordionPanelId"/>

但我不想更新所有选项卡。

【问题讨论】:

  • 我已经试过你的例子,我发现 ID 只提供给选项卡区域,而不是选项卡标题,为什么它不更新选项卡标题,你需要全部更新或删除 css 类( .ui-helper-hidden) 通过 javascripts 表单标签页眉。

标签: jsf primefaces


【解决方案1】:

您需要将选项卡的disabled 属性绑定到您将在服务器端切换的disableTab 支持bean 变量。为了反映您在服务器端所做的更改,然后在客户端对 &lt;p:accordionPanel/&gt; 进行 ajax 更新。使用您当前的设置,您需要做的唯一更改是:

  1. disabled 属性绑定到您设置的支持 bean 变量

       <p:tab id="tab2" title="Second Tab" disabled="#{tabBean.disableTab}">
           <h:outputText value="Contents of Tab2"/> 
       </p:tab>
    
  2. 使用 javascript API 启用后自动切换到选项卡

       <p:tab id="tab1" title="First Tab">
          <h:outputText value="Contents of Tab1"/>
             <h:form>
               <p:commandButton value="Enable Tab2" oncomplete="accordionPanelWidget.select(2)" action="#{tabBean.buttonAction}" update=":accordionPanelId:tab2"/>
            </h:form>
       </p:tab>
    

【讨论】:

  • 嗨 kolossus..,感谢您的回复,对不起,我忘记将禁用的选项卡绑定到 bean 变量。现在我做到了,但问题是选项卡没有正确更新,请查看问题的新编辑。
  • @Kishor,“未正确更新”是什么意思?不反映变化?为什么不直接更新您有兴趣更新的标签页?
  • 试过这个例子??它启用选项卡内容但不启用选项卡标题(单击以打开选项卡的位置)。标题被冻结/禁用。试一试就明白了。
【解决方案2】:

您必须更新所有手风琴面板才能启用/禁用选项卡。在这种情况下,您必须更新手风琴PanelId。但是,您可以在手风琴面板中使用 dynamic="true" 属性来避免更新未渲染的部分。

【讨论】:

  • 请阅读原始问题。一切都已经在那里了,OP 不想要这个。
  • 但是,您可以在手风琴面板中使用 dynamic="true" 属性来避免更新未渲染的部分。
猜你喜欢
  • 1970-01-01
  • 2017-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2018-04-04
  • 1970-01-01
相关资源
最近更新 更多