1

我有一些标签和渲染属性。我的问题是如何在关闭选项卡时将此选项卡的呈现属性设置为 false。我用 setRendered 方法设置,但问题是 renderTab1 变量仍然为 True。我想做的是;将 renderTab1 变量设置为“False”。顺便说一句,我有很多标签,比如 20-25。如果您有更好的解决方案可以分享。

我的xhtml;

   <p:ajax event="tabClose" listener="#{myController.onTabClose}"/>

   <p:tab id="firstTab" closable="true" 
   rendered="#{myController.renderTab1}"/>

我的 tabclose 方法;

public void onTabClose(TabCloseEvent event) {
    event.getTab().setRendered(false);
}
4

2 回答 2

1

我找到了解决方案,我需要这样做来解决我的问题。

我的解决方案不仅与渲染有关,我还需要使用一个变量来渲染选项卡,并使用一个变量将您发送到我的选项卡在我的 tabView 中的位置,就像这样。

在 tabView 设置参数是这样的......

<p:tabView id="idTabView" widgetVar="tabView" dynamic="true" cache="false">
   in tab
   <p:tab rendered="#{mb.valiable == 1}"><!--the number 1 is an example-->
   </p:tab>
</p:tabView>

在我想在第一个选项卡上的 commandButton 上,我放了这个:

<p:commandButton
actionListener="mb.activeTab()"
update="@form"
oncomplete="PF('tabView').select(1);" <!--this line send to tab that you are rendering with your flag in mb "variable" if you are render TAB in position three you need to put PF('tabView').select(2);-->

在我的 MManagedBean 方法上:

mb{
   private int valiable;

   public voi activeTab(){
            setValiable(1);
   }

   //setter y getters
}

我希望能帮助你解决我的问题。问候

于 2017-07-20T21:57:58.950 回答
0

JSF 组件的rendered属性在整个 JSF 生命周期中被解析多次,因此在 JSF 实际开始渲染时手动设置事件不太可能起作用。但是,该rendered属性可以采用以下值:

  1. 布尔属性:例如。rendered="#{myController.booleanProperty}"

  2. 返回布尔值的方法:例如。rendered="#{myController.doStuffAndReturnBoolean()}"

  3. 解析为布尔值的 EL 表达式:例如。rendered="#{myController.intValue gt 3}"

于 2013-04-29T11:57:03.817 回答