Jsf 动态禁用/启用p:accordionPanel中的p:tab
我只希望动态启用或禁用单个选项卡(而不是整个accordion面板)。 我尝试了以下方法,以下是我的代码: index.xhtmlJsf 动态禁用/启用p:accordionPanel中的p:tab,jsf,primefaces,Jsf,Primefaces,我只希望动态启用或禁用单个选项卡(而不是整个accordion面板)。 我尝试了以下方法,以下是我的代码: index.xhtml <p:accordionPanel id="accordionPanelId" widgetVar="accordionPanelWidget"> <p:tab id="tab1" title="First Tab"> <h:outputText value="Contents of Tab1"/>
<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>
使用上述方法,Tab2的内容显示出来,但Tab标题仍然冻结,
也许这不是一个上帝的方法来实现这一点。。。
请建议此方法的任何其他方式或更改
编辑:如果我按如下方式更新整个手风琴面板,上述方法工作正常:
但我不想更新所有的标签
您需要将选项卡的
disabled
属性绑定到将在服务器端切换的disableTab
backingbean变量。为了反映您在服务器端所做的更改,您可以在客户端用ajax更新
。使用当前设置,您只需进行以下更改:
disabled
属性绑定到已设置的backingbean变量
<p:tab id="tab2" title="Second Tab" disabled="#{tabBean.disableTab}">
<h:outputText value="Contents of Tab2"/>
</p:tab>
<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>
您必须更新所有accordionPanel才能启用/禁用选项卡。在这种情况下,您必须更新accordionPanelId。但是,您可以在accordionPanel中使用dynamic=“true”属性来避免更新未渲染的部分。Hi kolossus..,感谢您的回复,很抱歉,我忘了将禁用的选项卡绑定到bean变量。现在我做了,但问题是选项卡没有正确更新,请查看问题的新编辑。@Kishor,“没有正确更新”是什么意思?它没有反映出变化?你为什么不更新你感兴趣的标签呢?你试过这个例子吗??它启用选项卡内容,但不启用选项卡标题(单击以打开选项卡的位置)。标题已冻结/禁用。你只要试一下就明白了。请阅读原始问题。它已经在那里了,OP不希望这样。但是,您可以在accordionPanel中使用dynamic=“true”属性来避免更新未渲染的部分。我已经尝试了您的示例,我发现ID只提供给选项卡区域,而不是选项卡标题,这就是为什么它不更新选项卡标题,您需要全部更新,或者删除css类(.ui helper hidden)javascripts的表单选项卡标题。
<p:tab id="tab2" title="Second Tab" disabled="#{tabBean.disableTab}">
<h:outputText value="Contents of Tab2"/>
</p:tab>
<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>