【发布时间】: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