2013-09-25 1 views
0

У меня есть богатый: аккордеон, который имеет два богатых: accordionItems в нем. Некоторые действия в аккордеоне 2, делает аккордеонItem 1 отключенным. Следовательно, после этого действия я повторно отрисую весь аккордеон, чтобы аккордеон 1 был показан как отключенный. Но при повторном рендеринге, хотя элемент1 отключен, item2 обрушивается. Как я могу избежать этого? В основном, на rerender, аккордеон всегда показывает item1 как расширенный и сворачивает все остальные. Здесь, когда я отключу элемент1, все рушится. Как восстановить состояние аккордеона даже после повторной визуализации или обновления страницы?rich: аккордеон разрушает все аккордеонные элементы на странице обновления

ответ

1

Просто установите атрибут activeItem аккордеона. (docs)

<rich:accordion activeItem="#{bean.activeItem}"> 
    <rich:accordionItem name="first">…</rich:accordionItem> 
    <rich:accordionItem name="second">…</rich:accordionItem> 
</rich:accordion> 

он указывает на имя обновлений <rich:accordionItem> и при переключении вкладок.

+0

метод в bean-компоненте, должен ли быть установленActiveItem? У меня был метод setActiveItem (String activeItem) в контроллере. Но я получаю следующее исключение: @ 13,137 activeItem = "# {bean.activeItem}": свойство 'activeItem' не читается по типу java.lang.String. –

+0

Ok .. Извините, я не добавил getter в атрибут activeItem. Но проблема в том, что в первый раз, когда страница пытается загрузить, ее доступ к getActiveItem() в bean-компоненте, который возвращает пустую строку в первый раз. Это ломает страницу, давая исключения нулевого указателя Ошибка Rendering Просмотр [/myPage.xhtml] java.lang.NullPointerException \t на org.richfaces.component.AbstractAccordion.getActiveItem (AbstractAccordion.java:57) \t в org.richfaces.component.AbstractTogglePanel.encodeBegin (AbstractTogglePanel.java:161) –

+0

Вам нужно будет инициализировать String тогда :). 'private String activeItem =" first "' – Makhiel

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