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

时间:2013-02-21 18:33:21

标签: java spring jsf-2

我有一个Converter类,我使用了以下内容,以便我可以使用@Inject来访问我的服务类。

@Named("myMB")
@ViewAccessScoped

但是当我尝试使用

myservice.getCategories();

我在这一行得到null pointer exception。这可能是什么原因? 我在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; } 在Converter类中使用,给我例外。

转换器类

{{1}}

1 个答案:

答案 0 :(得分:3)

如果您将其用作@FacesConverter实例而不是@Named实例,则会发生这种情况。 @Inject无效@FacesConverter。摆脱@FacesConverter以避免将来混淆,并将转换器引用为converter="#{categoryConverter}"(使用@Named)而不是converter="categoryConverter"(使用@FacesConverter)。< / p>

请注意,我假设Spring部分已正确配置,否则它仍然是null。我不做Spring,所以如果它在CDI托管bean而不是Spring托管bean中运行,我无法告诉表单顶部。我发现将CDI和Spring混合起来只是令人惊讶和有趣,而Spring则是CDI / EJB的竞争对手/替代品。