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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> @Autowired SessionFactory null 
:(
    Опции темы
4epT
Дата 14.7.2011, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А как правильно инициализировать DAO бин ? Мне нужно что бы он был проинициализирован в JSF бине ....

я делаю вот так вот:
Код

@ManagedBean(name="user")
@SessionScoped
@Repository
public class UserBean implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    
    private String name;
    private String password;
    private List<Country> countryList;
    
    @Autowired
    private CountryDaoImpl countryDao;

но counrtyDao = null ((
PM MAIL   Вверх
MisterCleric
Дата 14.7.2011, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

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



Вот!!!
Ты же о JSF ничего не говорил. У тебя  @Autowired получается NULL, потому как ты этот UserBean достаешь не из Spring контейнера, а из JSF контейнера.

Что бы все нормально работало, надо все JSF-обращение отделегировать в Spring. Т.е. тебе нужно сконфигурить только один контейнер - Spring. А JSF будет им пользоваться. 
Почитай про интерагцию JSF+Spring и будет тебе счастье.
Я тут на форуме тоже не раз уже об этом писал.



--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
4epT
Дата 14.7.2011, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Окей, почитаю ) спасибо!

А как насчет варианта что бы сделать класс в котором все спринг бины будут статик ? и из JSF выдергивать нужные бины ?

Это сообщение отредактировал(а) 4epT - 14.7.2011, 09:46
PM MAIL   Вверх
MisterCleric
Дата 14.7.2011, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

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



Не-а. Такое не нужно у тебя уже есть такой объект - applicationContext. Ты его можешь сделать статик полем в каком-то классе, и инициализировать это static поле каким-то ServletContextListener.
И доставая applicationContext с помощью WebApplicationContextUtils
Но, по-моему, это излишне. Можно всегда выкрутиться теми способами, которые уже существую и показали себя со временем.


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
4epT
Дата 17.7.2011, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Попробовал так как ты посоветовал ) Дописал в web.xml:

Код

       <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>


Добавил faces-config.xml:

Код

<?xml version="1.0" encoding="UTF-8"?>
<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
    version="2.0">
 
    <application>
     <el-resolver>
         org.springframework.web.jsf.el.SpringBeanFacesELResolver
     </el-resolver>
    </application>
 
</faces-config>


Managed bean остался таким же:

Код

@ManagedBean
@SessionScoped
public class UserBean implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    
    private String name;
    private String password;
    private List<Country> countryList;
    
    @Autowired
    private CountryDaoImpl countryDao;


Но при вызове метода, countryDao = null. Это означает что этот бин находиться не в том контексте ?
PM MAIL   Вверх
MisterCleric
Дата 17.7.2011, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

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



Привет.
Конечно не там.
Если ты уж перешел на Spring, то и отказывайся от JSF-контейнера.
Это  class должен быть помечен так:
Код

@Service
@Scope("session")
public class UserBean implements Serializable {

т.е. сделай его полностью spring'овским


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
4epT
Дата 17.7.2011, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Так и думал .... сейчас попробую )

И еще такой вопрос, во многих примерах (почти все такие находил) спринг бин (в данном случае countryDao), инжекстится (managed-property) в jsf бин, и в faces-config прописываются другой параметр (не помню как называется )... почему везде приводят именно такой пример ?

Это сообщение отредактировал(а) 4epT - 17.7.2011, 22:26
PM MAIL   Вверх
4epT
Дата 17.7.2011, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



После того как сделал UserBean полностью спринговым, стало писать вот такое:

Код

/index.xhtml @15,59 value="#{userBean.name}": Property 'name' not found on type $Proxy17


Как мне теперь работать с этим бином ? я не могу с ним работать так как с managed jsf bean ? 

В бине объявлены два поля: 

Код

    private String name;
    private String password;


и для них созданы get и set методы

Это сообщение отредактировал(а) 4epT - 17.7.2011, 23:06
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.0558 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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