2014-01-25 2 views
0

Я получаю исключение NullPoin при вызове любого метода Spring Bean, поскольку, кажется, он не вводится в контейнер. И я не могу понять, почему.Autowiring Spring Bean от JSF-контроллера

Особенность заключается в том, что контроллер использует JSF, а фасоль - это весенний боб: может быть, это проблема? Или просто ошибка конфигурации?

The (упрощенный) кода и конфигурации является:

context.xml (вызывается из корневого контекста)

<?xml version="1.0" encoding="UTF-8"?> 

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:jpa="http://www.springframework.org/schema/data/jpa" 
    xmlns:plugin="http://www.springframework.org/schema/plugin" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd 
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
     http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.0.xsd 
     http://www.springframework.org/schema/plugin http://www.springframework.org/schema/plugin/spring-plugin.xsd"> 

<!--===========LANGUAGE_TO_LOCALE SERVICE CONFIG BEGIN===========--> 

<bean 
    id="languagesCountryLocaleHelper" 
    class="com.i18n.MyControllerHelper" 
    scope="request" /> 


</beans> 

JSF CONTROLLER:

@RequestScoped 
@Named  
public class MyController { 

    @Autowired 
    private MyControllerHelper helper; 

    public void doSomething() { 
    helper.doSomething(); 
    } 
} 

MyControllerHelper:

@Component 
public class MyControllerHelper { 

    public void doSomething() { 
    // do something useful 
    } 
} 

Итак, это упрощенный случай. Есть ли у вас какие-либо идеи о том, где моя ошибка?

Спасибо заранее!

+0

Попробуйте использовать '@ Inject' вместо' @ Autowired'. –

+0

Уже пробовал. Но без другого результата, спасибо вам в то время. –

+0

Я не думаю, что вы можете впрыснуть в последнее поле, когда-либо. Вы также не должны создавать это так. –

ответ

0

Я решил проблему инъекционного MyControllerHelper через:

helper = AppContext.getBean(MyControllerHelper.class); 

После этого, фасоль инстанциируется и вводят и в каскаде все остальные бобы после него , Я предполагаю, что это связано с тем, что JSF Controller экземпляр объекта Controller находился в другом контейнере, который теперь автоматически узнает о Spring Beans.

0
@Autowired 
private MyControllerHelper helper = new MyControllerHelper(); 

изменение в этом

@Autowired 
private MyControllerHelper languagesCountryLocaleHelper; 
+0

создание экземпляра через новый MyControllerHelper - это работа. удалено из примера, thx. –

Смежные вопросы