0

此代码产生 NullPointerException。我不知道为什么。当我使用 @PostConstruct 将代码从构造函数放到其他 void 时 - 它可以工作。我试图启动 kclientFacade - 但它也不起作用。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 回答