Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring@Inject服务类返回空指针异常_Java_Spring_Jsf 2 - Fatal编程技术网

Java Spring@Inject服务类返回空指针异常

Java Spring@Inject服务类返回空指针异常,java,spring,jsf-2,Java,Spring,Jsf 2,我有一个Converter类,我在其中使用了以下内容,以便使用@Inject访问我的服务类 @Named("myMB") @ViewAccessScoped 但是当我尝试使用 myservice.getCategories(); 我在这一行得到了空指针异常。这可能是什么原因? 我在ManagedBean中使用了相同的服务方法来填充selectOneMenu,但是 在转换器类中使用,给我异常 转换器类 @FacesConverter("categoryConverter") @Named("m

我有一个
Converter
类,我在其中使用了以下内容,以便使用
@Inject
访问我的服务类

@Named("myMB")
@ViewAccessScoped
但是当我尝试使用

myservice.getCategories();
我在这一行得到了
空指针异常
。这可能是什么原因? 我在
ManagedBean
中使用了相同的服务方法来填充
selectOneMenu
,但是 在转换器类中使用,给我异常

转换器类

@FacesConverter("categoryConverter")
@Named("myMB")
@ViewAccessScoped
public class CategoryConverter implements Converter {

@Inject
CategoryService myservice;

    @Override
        public Object getAsObject(FacesContext facesContext, UIComponent component,
                String value) {
            System.out.println("reached in converter "+value);
            try {


                    List<Category> cat = myservice.getCategories();
                    for (Category cat : category) {
                        if (cat.getCategoryCode() == value) {
                            return cat;
                        }
                    }
                }

            } catch (Exception e) {
                System.out.println("exception from getAsObject  ");
                e.printStackTrace();
            }
            return null;
        }
@FacesConverter(“类别转换器”)
@命名为(“myMB”)
@ViewAccessScope
公共类CategoryConverter实现转换器{
@注入
类别服务myservice;
@凌驾
公共对象getAsObject(FacesContext FacesContext、UIComponent组件、,
字符串值){
System.out.println(“到达转换器”+值);
试一试{
List cat=myservice.getCategories();
适用于(类别类别:类别){
if(cat.getCategoryCode()==值){
返回猫;
}
}
}
}捕获(例外e){
System.out.println(“来自getAsObject的异常”);
e、 printStackTrace();
}
返回null;
}

如果将其用作
@FacesConverter
实例而不是
@命名的
实例,则可能发生这种情况。
@Inject
@FacesConverter
上不起作用。摆脱
@FacesConverter
以避免将来的混淆,并将转换器引用为
converter=“{categoryConverter}”
(使用
@Named
)而不是
converter=“categoryConverter”
(使用
@FacesConverter


请注意,我假设弹簧部件配置正确,否则它仍然是
null
。我不做Spring,所以我无法从顶部判断它是否在CDI管理的bean而不是Spring管理的bean中工作。我发现您将CDI和Spring混合在一起,而Spring是CDI/EJB的竞争对手/替代品,这非常令人惊讶和有趣。

如果您将它用作
@FacesConverter
实例,而不是
@命名的
实例,则可能会发生这种情况。
@Inject
@FacesConverter
上不起作用。摆脱
@FacesConverter
以避免将来的混淆,并将转换器引用为
converter=“{categoryConverter}”
(使用
@Named
)而不是
converter=“categoryConverter”
(使用
@FacesConverter


请注意,我假设弹簧部件配置正确,否则它仍然是
null
。我不做Spring,所以我无法从顶部判断它是否在CDI管理的bean而不是Spring管理的bean中工作。我发现您将CDI和Spring混合在一起,而Spring是CDI/EJB的竞争对手/替代品,这一点非常令人惊讶和有趣。

BalusC完全正确。幕后实际发生的事情是,JSF上下文本身将实例化用@FacesConverter注释的类。因为这在Spring上下文之外发生,所以不会注入依赖项。BalusC是绝对正确的。幕后实际发生的事情是,JSF上下文本身将实例化用@FacesConverter注释的类。因为这发生在Spring上下文之外,所以不会注入依赖项。