Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемы с primefaces 
V
    Опции темы
anti_snayper
Дата 27.5.2010, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 13.2.2007

Репутация: нет
Всего: нет



Всем, привет.

Собственно проблемы 2:

во-первых, при закрытии диалогового окна вызывается апдейт таблицы и в ней пропадают поля для фильтрации. Это мой касяк или баг фреймворка? Можно ли обойти как-нить?

во-вторых, никак не могу разобраться с тем как управлять видимостью компонентов на странице. При открытии диалогового окна мне надо обображать в нем определенный набор кнопок(для добавления или для редактирования). Предполагал сделать так - если юзер в бине есть то редактирование, нет - добавление. Юзер сетается в бин через ajax при клике на строке таблицы. Свойство rendered насколько я
 понял в данном случае не подходит. Пока на ум приходит только управление видимостью div-ов содержащих эти кнопки через js, но мне кажется что должен быть более простой подход для  этих целей средствами самого фреймворке. 
Код

<ui:define name="body">    
    <h:form>
        <p:panel>
            <p:dataTable width="100%" id="userListTable" styleClass="yui-skin-sam" var="user" value="#{adminBean.users}" 
                         paginator="true" paginatorPosition="bottom"
                         rows="10" selectionMode="single"
                         selection="#{adminBean.processedUser}" dynamic="true" update="display"
                         onselectComplete="userDialog.show()">

                <p:column filterBy="#{user.login}" resizable="true">
                    <f:facet name="header">
                        <h:outputText value="#{i18n['pages.user_list.login']}" />
                    </f:facet>
                    <h:outputText value="#{user.login}" />
                </p:column>
                
                <p:column filterBy="#{user.lastName}" resizable="true">
                    <f:facet name="header">
                        <h:outputText value="#{i18n['pages.user_list.lastName']}" />
                    </f:facet>
                    <h:outputText value="#{user.lastName}" />
                </p:column>            
            </p:dataTable>
            <p:commandButton value="Add New User" onclick="userDialog.show()"/>
        </p:panel>    

            <p:dialog header="User Details" widgetVar="userDialog" modal="true"
                fixedCenter="true" draggable="false" width="300px" close="false">

                <h:panelGrid id="display" columns="2">
                    <h:outputText value="#{i18n['pages.user_list.login']}:" />
                    <h:inputText value="#{adminBean.processedUser.login}"
                        style="font-weight:bold" />

                    <h:outputText value="#{i18n['pages.user_list.lastName']}:" />
                    <h:inputText value="#{adminBean.processedUser.lastName}"
                        style="font-weight:bold" />                               
                </h:panelGrid>
                <div id="addUserButtonsBlock" align="right">
                        <p:commandButton type="image" action="#{adminBean.doAddUser}" image="/i/add.gif" update="userListTable, display" oncomplete="userDialog.hide()"/>&nbsp;&nbsp;
                        <p:commandButton type="image" action="#{adminBean.doCancelEditUser}" image="/i/cancel.png" update="userListTable, display" oncomplete="userDialog.hide()"/>
                </div>
                <div id="editUserButtonsBlock" align="right">
                        <p:commandButton type="image" action="#{adminBean.doUpdateUser}" image="/i/passed.gif" update="userListTable, display" oncomplete="userDialog.hide()"/>&nbsp;&nbsp;
                        <p:commandButton type="image" action="#{adminBean.doDeleteUser}" image="/i/delete.png" update="userListTable, display" oncomplete="userDialog.hide()"/>&nbsp;&nbsp; 
                        <p:commandButton type="image" action="#{adminBean.doCancelEditUser}" image="/i/cancel.png" update="userListTable, display" oncomplete="userDialog.hide()"/>
                </div>
            </p:dialog>
        </h:form>
    </ui:define>


Спасибо.

Это сообщение отредактировал(а) anti_snayper - 27.5.2010, 10:42
PM MAIL   Вверх
vogdb
Дата 28.5.2010, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 8.1.2010

Репутация: нет
Всего: нет



Решил 2ой вопрос через rendered на jsf2. Все прекрасно работало. Имхо, проблему видимости через js решать несерьезно.
PM MAIL   Вверх
anti_snayper
Дата 2.6.2010, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 13.2.2007

Репутация: нет
Всего: нет



По первому вопросу: заменил фильтрацию на сортировку по колонкам + paging. Фильтрация, конечно в primefaces вещь удобная, но не самая презентабельная...

Второй вопрос так и не решен. Да рендеринг позволяет управлять видимостью компонентов на странице, но actions повещенные на кнопки после этого не срабатывают, методы бина не вызываются. Причем без этого атрибута все работает на ура.

Пример кода.
Код

<h:panelGroup align="right" rendered="not empty buildingBean.currentBuilding.id">
             <h:commandButton type="image" action="#{buildingBean.doUpdateBuilding}"
                          image="/i/passed.gif" update="messages" />&nbsp;&nbsp;
              <h:commandButton type="image" action="#{buildingBean.doDeleteBuilding}"                                        
                          image="/i/delete.png" update="messages" />&nbsp;&nbsp;                                         
              <h:commandButton type="image" action="#{buildingBean.doCancelEditBuilding}"
                          image="/i/cancel.png" />
</h:panelGroup>                                    
<h:panelGroup align="right" rendered="empty buildingBean.currentBuilding.id">
              <h:commandButton type="image" action="#{buildingBean.doAddBuilding}"                                             
                          image="/i/add.gif" update="messages" />&nbsp;&nbsp;                  
              <h:commandButton type="image" action="#{buildingBean.doCancelEditBuilding}"
                          image="/i/cancel.png" />
</h:panelGroup>    


Насколько я понял, primefaces здесь не при чем. Это касяк самого jsf. Кто-нибудь знает как это обойти?


Это сообщение отредактировал(а) anti_snayper - 3.6.2010, 02:57
PM MAIL   Вверх
m0zg
Дата 3.6.2010, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.7.2007

Репутация: 2
Всего: 2



спроси тут, отвечают достаточно оперативно. Недавно даже компонент новый написали по моей просьбе smile
PM MAIL   Вверх
anti_snayper
Дата 3.6.2010, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 13.2.2007

Репутация: нет
Всего: нет



Честно говоря, мне все-таки кажется, что проблема в jsf. При клике на кнопке, нужный метод бина не вызывается, но страница перезагружается. Причем в ее бине сохраняются только те значения, под которые на странице были созданы компоненты(textInput, например). Остальные значения бина теряются.
PM MAIL   Вверх
m0zg
Дата 4.6.2010, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.7.2007

Репутация: 2
Всего: 2



Я что-то вопрос не очень понимаю. У тебя не работают action'ы в диалоге? Т.е. методы, прописанные в них не вызываются?
PM MAIL   Вверх
anti_snayper
Дата 4.6.2010, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 13.2.2007

Репутация: нет
Всего: нет



Именно так. Тем не менее, страница перезагружается и ее бин содержит неполные данные.
PM MAIL   Вверх
m0zg
Дата 4.6.2010, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.7.2007

Репутация: 2
Всего: 2



У меня была такая проблема в RichFaces c компонентом modalPanel. Там не работают action'ы. Поменяй на actionListner, должно сработать.
PM MAIL   Вверх
anti_snayper
Дата 4.6.2010, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 13.2.2007

Репутация: нет
Всего: нет



Не помогло. Тот же результат. 
PM MAIL   Вверх
anti_snayper
Дата 12.6.2010, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 13.2.2007

Репутация: нет
Всего: нет



Проблему, по-нормальному, решить так и не удалось. В интернете нашел много постов на подобные темы. В качестве решений в них предлагались различные костыли: перевод бина из requestScope в SessionScope, использование jstl(if-конструкции) и т.д.. Вариант с сессией мне явно не подходил, с jstl тоже не пошло. В результате придумал свой.
Код

.hidden {
       display:none;
}


и на самой страничке:
Код

<h:panelGroup class="#{not empty buildingBean.currentBuilding.id ? '' : 'hidden'}">


PM MAIL   Вверх
anti_snayper
Дата 13.6.2010, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 13.2.2007

Репутация: нет
Всего: нет



закрыта
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0894 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.