0

サービスクラスにアクセスConverterするために使用できるように、次を使用したクラスがあります。@Inject

@Named("myMB")
@ViewAccessScoped

しかし、私が使用しようとしたとき

myservice.getCategories();

私はnull pointer exceptionこのラインに到達しています。これの理由は何でしょうか?で同じサービスメソッドを使用してManagedBeanデータを入力しましたがselectOneMenu、Converterクラスで使用すると、例外が発生します。

コンバータークラス

@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;
        }
4

1 に答える 1

3

これは、インスタンスとして@FacesConverterではなくインスタンスとして使用した場合に発生する可能性があり@Namedます。@Injectでは動作しませ@FacesConverterん。@FacesConverter将来の混乱を避けるために取り除き、コンバーターをas converter="#{categoryConverter}"(を使用する@Named)ではなくas converter="categoryConverter"(を使用する)として参照し@FacesConverterます。

Springパーツが適切に構成されていると想定していることに注意してください。そうでない場合でも、構成されますnull。私はSpringを行っていないので、SpringマネージドBeanではなくCDIマネージドBean内で機能するかどうか、頭のてっぺんからわかりません。SpringがCDI/EJBの競合/代替として意図されているのに対し、CDIとSpringを混合しているのは驚くべきことであり、面白いと思います。

于 2013-02-21T18:37:44.957 に答える