Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > JSF - присвоить значение свойства бину


Автор: archez 8.6.2009, 14:55
Помогите с проблемой, плз.
Необходимо из JSF страницы *.xhtml присвоить значение параметру бина.
копал в сторону 
<c:set ...
и
<jsp:setProperty
но не срабатывает.



Автор: powerOn 8.6.2009, 18:48
не совсем понятна задача. 
значения присваиваются свойствам бинов через формы или с использованием action-ов (от конкретной задачи зависит).  

Автор: archez 9.6.2009, 04:39
Через формы или с использованием action-ов значения свойствам присваиваются при взаимодействии с пользователем. В моем случае нужно присвоить значение свойству бина при загрузке страницы, т.е. до того как пользователь успел что либо на странице кликнуть.
PS:

И еще такой вопрос: каким образом можно из jsf страницы (*.xhtml - использую facelets), динамически создавать бины в контексте сессии, т.е. не определяя их в faces-config.xml

Автор: powerOn 9.6.2009, 14:28
Цитата(archez @  9.6.2009,  05:39 Найти цитируемый пост)
В моем случае нужно присвоить значение свойству бина при загрузке страницы, т.е. до того как пользователь успел что либо на странице кликнуть.


Что за значение и откуда это оно берется? Присваивайте его в коде бина, во время инициализации.

Цитата(archez @  9.6.2009,  05:39 Найти цитируемый пост)
И еще такой вопрос: каким образом можно из jsf страницы (*.xhtml - использую facelets), динамически создавать бины в контексте сессии, т.е. не определяя их в faces-config.xml 


Со страницы никак. Да и не должны подобные операции выполнятся на странице. Но это можно сделать в бине. 
В простейшем случае достаточно иметь один сессионный бин у которого map со значениями. В map класть все что нужно - на странице обратиться к этим значения можно будет без проблем. Если нужно именно бин, то вероятно нужно смотреть в сторону классов ApplicationAssociate и BeanManager.

Автор: archez 10.6.2009, 07:35
если чуть подробнее, то идея вот какая - есть сессионный бин - он один для всех страниц, своего рода универсальное хранилище, для определенности PageBean. В зависимости от того с какой стринцы к нему идет обращение этот бин будет обращаться к тому или иному классу. Эти классы реализуют логику конкретной страницы. Обращение к ним идет через определенный интерфейс, который каждый из этих классов реализует. Но для того, чтобы обратиться к определенному классу нужно либо из *.xhtml в PageBean передать ссылку на этот класс (в идеале - динамически создать бин в контексте сессии), либо какое либо уникально значение - тогда экземпляр нужного класса я смогу создать в бине либо, если он уже создан - извлечь из мапа.

Автор: powerOn 10.6.2009, 10:50
Цитата(archez @  10.6.2009,  08:35 Найти цитируемый пост)
В зависимости от того с какой стринцы к нему идет обращение этот бин будет обращаться к тому или иному классу.


А может инвертировать взаимодействие? Каждая страница обращается к нужному классу (бину нужного класса) которые в свою очередь имеет доступ к PageBean? 
Т.е. сейчас: Page -> Page Bean -> Logic Bean. 
А если: Page -> Logic Bean -> Page Bean. 

С другой стороны получится необходимость создавать дополнительный бин на каждую страницу и ставить его в цепочке взаимодействия между страницей и PageBean. [Page -> Additional Bean -> Page Bean -> Logic Bean]. Additional Bean смог бы идентифицировать страницу. Но честно говоря мне такой подход не очень нравится.

Автор: archez 11.6.2009, 04:28


Цитата(powerOn @  10.6.2009,  10:50 Найти цитируемый пост)
А может инвертировать взаимодействие? Каждая страница обращается к нужному классу (бину нужного класса) которые в свою очередь имеет доступ к PageBean? 
Т.е. сейчас: Page -> Page Bean -> Logic Bean. 
А если: Page -> Logic Bean -> Page Bean. 

Да, пожалуй, так будет лучше.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)