0

このコードは NullPointerException を生成します。どうしてか分かりません。@PostConstruct を使用して、コンストラクターから他のボイドにコードを配置すると、機能します。klientFacade を開始しようとしましたが、機能していません。クラス KlientFacade は @Stateless です。

package view;
import entity.Klient;
import facade.KlientFacade;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import static util.Messages.addFlashMessage;

@ManagedBean
@ViewScoped
public class ManageClient implements Serializable {
    @EJB
    private KlientFacade klientFacade;
    private List<Klient> clientList;

    public List<Klient> returnClientList(){
        return getKlientFacade().findAll();
    }

    public ManageClient() {
        clientList = new ArrayList<>();
        clientList = returnClientList();
    }

    public String removeClient(Klient klient){
        addFlashMessage("Klient ["+klient.getLogin()+"] został usunięty.");
        getKlientFacade().remove(klient);
        return "manage";
    }

    public List<Klient> getClientList() {
        return clientList;
    }

    public void setClientList(List<Klient> clientList) {
        this.clientList = clientList;
    }

    public KlientFacade getKlientFacade() {
        return klientFacade;
    }

    public void setKlientFacade(KlientFacade klientFacade) {
        this.klientFacade = klientFacade;
    }
}
4

1 に答える 1

1

注入されたオブジェクトは、コンストラクター呼び出しの前にインスタンス化されないためです。@PostConstructそのため、注釈付きのNPE を取得していません。コンストラクターで挿入されたフィールドにアクセスする必要がある場合は、http://openejb.apache.org/constructor-injection.htmlを試してください。

于 2013-08-17T21:17:21.443 に答える