| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > RichFaces: rich:extendedDataTable и selection |
| Автор: beolnix 2.3.2010, 17:32 | ||||||
| у rich:extendedDataTable есть классный атрибут selection. Согласно документации и примерам, данным атрибутом мапится проперти типа org.richfaces.model.selection.SimpleSelection, которая обновляется каждый раз когда список выделенных элементов в таблице изменился. Сам SimpleSelection, если я правильно понял, есть ни что иное как Map порядковый_номер_выделенной_строчки:порядковый_номер_элемента_в_коллекции_ClientsListAction.getAllClients() . другими словами, если есть таблица вида:
и бин вида:
то по клику на любой из строчек таблицы в selection должен появится один объект SimpleRowKey (или больше одного если selectionMode="multi" ). Проблема в том, что в моем случае число объектов в selection всегда равно 0. т.е. если посмотреть на консоль appServer'а в который деплоится приложение с вышеописанной таблицей и бином, то после выделения какой либо строчки из таблицы там будет:
Получается что обработчик события onselectionchange отрабатывает корректно, но сам объект SimpleSelection не содержит в себе ни одной выделенной строчки. я перепробовал перекопипастил все примеры которые смог найти в интернетах, во всех одна и та же ошибка. Но как-то http://livedemo.exadel.com/richfaces-demo/richfaces/extendedDataTable.jsf он же работает на демосцене richfaces. Я подозреваю что у меня где-то что-то не так настроено. Cам проект представляет из себя ear app на базе seam. версии используемых фреймворков: seam 2.2.0.GA richfaces 3.3.3.CR1 jsf-api 1.2_12 servlet-api 2.5.0.GA jsf-facelets 1.1.15.B1 буду благодарен любой помощи или любому намеку, относительно того что стоит ковырять/перенастроить/изучить. |
| Автор: beolnix 3.3.2010, 01:29 | ||
| проблема решена. На всякий случай, если кто-то пойдет по тем же граблям что и я: в rich:extendedDataModel нужно подсовывать особую коллекцию. в примере с демосцены richfaces она создается след. образом:
от себя добавлю только пару фактов: 1) вышеприведенный код не заработал пока я е добавил перед инструкцией return dataModel; инструкцию dataModel.setRowIndex(-1); 2) следует быть аккуратным при выборе scope для session бина. В книге seam in action(легко гуглится англоязычный вариант 2009 года) есть пара ценных рекомендаций на этот счет. на всякий случай еще оставлю ссылку на код бина который используется на демосцене richfaces: http://anonsvn.jboss.org/repos/richfaces/branches/community/3.3.X/samples/richfaces-demo/src/main/java/org/richfaces/demo/extendedDataTable/ExtendedTableBean.java |
| Автор: dzhagr 17.8.2010, 22:27 |
| Beolnix, здаствуйте. У меня схожая проблема: всегда пустой selection в методе takeSelection(), однако, я использую scrollableDataTable. Единственный вариант, при котором этот объект наполняется - использовать в качестве скоупа для бина - session вместо request. Подскажите, плиз, какой скоуп жизни для своего бина задавали Вы. Я недавно работаю с richfaces и не могу пока разобраться - является ли сабмит аякс формы тем реквестом, по которому пересоздается бин, скоуп которого задан как request. Можете ответить на этот вопрос? Спасибо |