2

jpa と jsf を使用して開発しています。netbeans 7.2 用に生成されたコードに NullPointException が非常に大きいため、すべてのコードを配置していません。netbeans がエラーを起こしていると思いますが、修正できません。

@FacesConverter(forClass = MaterialEntrada.class)
public static class MaterialEntradaControllerConverter implements Converter {

    public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
        if (value == null || value.length() == 0) {
            return null;
        }
        MaterialEntradaController controller = (MaterialEntradaController) facesContext.getApplication().getELResolver().
                getValue(facesContext.getELContext(), null, "materialEntradaController");
        return controller.ejbFacade.find(getKey(value));
    }

    java.lang.Integer getKey(String value) {
        java.lang.Integer key;
        key = Integer.valueOf(value);
        return key;
    }

    String getStringKey(java.lang.Integer value) {
        StringBuffer sb = new StringBuffer();
        sb.append(value);
        return sb.toString();
    }

    public String getAsString(FacesContext facesContext, UIComponent component, Object object) {
        if (object == null) {
            return null;
        }
        if (object instanceof MaterialEntrada) {
            MaterialEntrada o = (MaterialEntrada) object;
            return getStringKey(o.getId());
        } else {
            throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: " + MaterialEntrada.class.getName());
        }
    }
}

エラーは次の行によって発生します。

return controller.ejbFacade.find(getKey(value));

ejbFacate は null ですが、コントローラーは null ではありません。

4

1 に答える 1

1

何が起こっているのかというと、コントローラーはjsfによって初期化されていますが、ejbfacadeは初期化されていません。これを行うために必要なコードをコンストラクターに追加するか、呼び出し時にそれを行うゲッターを作成します。

于 2012-08-31T00:35:30.110 に答える