2013-04-29 2 views
1

У меня есть некоторые вкладки и рендеринг атрибутов. Моя проблема в том, как я могу настроить отображаемые attiributes этой вкладки на false, когда я закрываю вкладку. Я установил с помощью метода setRendered, но проблема в переменной renderTab1 по-прежнему содержит True. Я хочу сделать это; для параметра renderTab1 присвоено значение «False». Кстати, у меня много вкладок, таких как 20-25. Если у вас есть лучшее решение, вы можете поделиться.Перфорирование динамической вкладки рендеринга

my xhtml;

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

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

мой метод таблеток;

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

ответ

0

rendered свойство компонента JSF решается несколько раз на протяжении всего жизненного цикла JSF, поэтому установить его вручную на событие вряд ли будет работать по времени JSF фактически начинает рендеринга. Атрибут rendered однако может принимать следующие значения:

  1. Логическое свойство: Ев. rendered="#{myController.booleanProperty}"

  2. Метод, возвращающий логическое значение: например. rendered="#{myController.doStuffAndReturnBoolean()}"

  3. EL выражение, которое разрешает логическое значение: например. rendered="#{myController.intValue gt 3}"

+0

Итак, как я могу получить это свойство boolean. например «Boolean b = event.getTab(). getRendered();» –

+0

@TurgutDsfadfa Это своего рода курица против яиц ... возможно, вы можете просто объяснить, что вы пытаетесь выполнить, потому что я уверен, что есть лучший способ, чем то, что вы пытаетесь сделать. –

+0

У меня есть 3 кнопки с названием «open tab1», «open tab2» и «open tab3». когда пользователь нажимает на эти кнопки, они активируют связанные с ними вкладки (скажем, tab1, tab2 и tab3). Например, если пользователь нажимает кнопку «открыть tab1», будет отображаться tab1, и если тогда пользователь нажимает кнопку «открыть tab2», tab2 также будет отображаться (теперь мы получили tab1 и tab2). Проблема заключается в закрытии вкладок. Например, если я закрою эти две вкладки (tab1 и tab2) и нажимаю кнопку «открыть tab3», активируются tab1 и tab2, потому что переменные, которые я привязал к их визуализированным свойствам, по-прежнему имеют значение «True». –

1

Я нашел решение, и мне нужно было сделать это, чтобы решить мою проблему.

Мое решение не только с рендерингом, мне нужно было использовать одну переменную для визуализации вкладки, а одну для отправки вам в позицию, которая будет моей вкладкой внутри моего табуляции некоторым понравится.

в параметрах 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);--> 

на моем MAnagedBean метод:

mb{ 
    private int valiable; 

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

    //setter y getters 
} 

Я надеюсь помочь вам в моем решении. Отношения

Смежные вопросы