powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JSP/RichaFaces: h:selectOneMenu и динамическое обновление элементов страницы
4 сообщений из 4, страница 1 из 1
JSP/RichaFaces: h:selectOneMenu и динамическое обновление элементов страницы
    #37847561
artgonch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

Я новичок в RichaFaces. Возникла такая проблема:
1. Есть JSP:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<f:view>
    <a4j:form>
    ....
    <h:selectOneMenu style="width:100px" value="#{userSessionBean.simpleDictPreffix}" id="dict-preffix"
                     valueChangeListener="#{userSessionBean.dictPreffixListValueChanged}">
        <f:selectItems value="#{applicationData.searchList}"/>
        <a4j:support event="onchange" ajaxSingle="true" action="#{userSessionBean.changeDictionaryAction}"
                     reRender="btnPanel"/>
    </h:selectOneMenu>
    ....
    <a4j:outputPanel rendered="#{userSessionBean.showDictBtnVisible}" id="btnPanel">
        <a4j:commandButton value="..." title="#{header_var.dict_btn_tip}"
                           action="#{userSessionBean.showDictAction}"
                           reRender="mpViewSearchValues"
                           rendered="#{userSessionBean.showDictBtnVisible}"
                           id="showDictBtn"/>
    </a4j:outputPanel>
</a4j:form>
</f:view>


2. Код обработчика события onchange компонента support :
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
        public String changeDictionaryAction() {
            ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();

            List<SearchItemDescriptor> searchItemList = (List<SearchItemDescriptor>) ec.getApplicationMap().get("search-list");

            for (SearchItemDescriptor sid : searchItemList) {
                String s = sid.getPreffix();

                if (s.equals(simpleDictPreffix) == true) {
                    if (sid.getMenu() != null) {
                        showDictBtnVisible = true;

                        return null;
                    }
                }
            }

            showDictBtnVisible = false;

            return null;
        }



Проблема в том, что когда свойство showDictBtnVisible принимает значение true, обновление страницы не происходит и кнопка не появляется.

Меня устроит даже такой вариант, когда при выборе значения из выпадающего списка происходила полная перезагрузка страницы, но как это сделать?

Версия RichFaces 3.3.2.

Заранее спасибо.
...
Рейтинг: 0 / 0
JSP/RichaFaces: h:selectOneMenu и динамическое обновление элементов страницы
    #37847705
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это неправильно:
Код: html
1.
reRender="btnPanel"


a4j:outputPanel по айдишнику не перерендеривается. Варианты решения:
1) Добавить в a4j:outputPanel аттрибут ajaxRendered="true" - плохое решение
2) Попробовать перерендеривать саму кнопку по ее ID
3) Обернуть кнопку во что-то, что можно перерендеривать, например в h:panelGrid
...
Рейтинг: 0 / 0
JSP/RichaFaces: h:selectOneMenu и динамическое обновление элементов страницы
    #37847924
artgonch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svenomВот это неправильно:

3) Обернуть кнопку во что-то, что можно перерендеривать, например в h:panelGrid

Прочитал на каком-то англоязычном форуме, что если изначально в JSF у элемента был rendered="false", то фреймворк не включает его в результирующее дерево. Поэтому обернул, и все получилось.

Спасибо.
...
Рейтинг: 0 / 0
JSP/RichaFaces: h:selectOneMenu и динамическое обновление элементов страницы
    #37848359
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svenom1) Добавить в a4j:outputPanel аттрибут ajaxRendered="true" - плохое решение

Довольно спорно - атрибут ajaxRendered как раз и создавался для таких случаев, а вот
svenom3) Обернуть кнопку во что-то, что можно перерендеривать, например в h:panelGrid
реально костыль, но его почему-то упорно все советуют:)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JSP/RichaFaces: h:selectOneMenu и динамическое обновление элементов страницы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]