发生错误:java.lang.NullPointerException

时间:2014-08-23 16:37:04

标签: java java-ee web

这是堆栈跟踪的第一行:

  java.lang.NullPointerException
    at de.jsfpraxis.managedbean.UeberweisungsHandler.auswahl(UeberweisungsHandler.java:81)....

整个代码都在这里。

@ManagedBean
公共课UeberweisungsHandler {

private static Logger logger = Logger.getLogger(UeberweisungsHandler.class.getCanonicalName());

@ManagedProperty(value = "#{kundenHandler}")
private KundenHandler kundenHandler;

private String empfaenger;
private String verwendungszweck;
private BigDecimal betrag;
private String konto;  // Syntax: <Nummer> (<Art>)
private String kontoEmpfaenger; // nicht verwendet

@PersistenceContext
private EntityManager em;

@Resource
private UserTransaction utx;

public UeberweisungsHandler() {
    logger.log(Level.INFO, UeberweisungsHandler.class.getName() + "-Instanz erzeugt");
}



public String ueberweisen() {
    logger.info("Konto: " + konto);
    String kontonummer = konto.substring(0, konto.indexOf(' '));
    try {
        utx.begin();
        Konto konto = em.find(Konto.class, new Integer(kontonummer));
        @SuppressWarnings("unused")
        Buchung buchung = new Buchung(betrag, Buchungsart.SOLL, empfaenger, verwendungszweck, konto);
        utx.commit();
        return "weitere-ueberweisung.xhtml?faces-redirect=true";
    } catch (Exception e) {
        logger.log(Level.SEVERE, "Fehler beim Einfügen einer Buchung");
        return null;
    }
}





/**
 * Das zu selektierende Konto wird bestimmt
 */
public void auswahl(ComponentSystemEvent cse) {
    logger.info("auswahl() aufgerufen");
    ELContext context = FacesContext.getCurrentInstance().getELContext();
    Application application = FacesContext.getCurrentInstance().getApplication();
    ExpressionFactory exFactory = application.getExpressionFactory();
    ValueExpression ve = exFactory.createValueExpression(context, "#{param['kontonummer']}", Integer.class);
    String kontonummer = ve.getValue(context).toString();

    List<String> konten = kundenHandler.getKonten();
    for (String kto : konten) {
        if (kto.startsWith(kontonummer)) {
            konto = kto; // Drop-Down setzen
        }
    }
}

// private Kunde getKunde(){ // ELContext context = FacesContext.getCurrentInstance()。getELContext(); // Application application = FacesContext.getCurrentInstance()。getApplication(); // ExpressionFactory exFactory = application.getExpressionFactory(); // ValueExpression ve = exFactory.createValueExpression(context,“#{kundenHandler.kunde}”,Kunde.class); // return(Kunde)ve.getValue(context); //}

public KundenHandler getKundenHandler() {
    return kundenHandler;
}
public void setKundenHandler(KundenHandler kundenHandler) {
    this.kundenHandler = kundenHandler;
}



public String getEmpfaenger() {
    return empfaenger;
}
public void setEmpfaenger(String empfaenger) {
    this.empfaenger = empfaenger;
}




public String getVerwendungszweck() {
    return verwendungszweck;
}
public void setVerwendungszweck(String verwendungszweck) {
    this.verwendungszweck = verwendungszweck;
}


public BigDecimal getBetrag() {
    return betrag;
}
public void setBetrag(BigDecimal betrag) {
    this.betrag = betrag;
}



public String getKonto() {
    return konto;
}
public void setKonto(String konto) {
    this.konto = konto;
}


public String getKontoEmpfaenger() {
    return kontoEmpfaenger;
}
public void setKontoEmpfaenger(String kontoEmpfaenger) {
    this.kontoEmpfaenger = kontoEmpfaenger;
}


public String getKontoinhaber() {
    Kunde kunde = kundenHandler.getKunde();
    return kunde.getVorname() + " " + kunde.getNachname();  
}

}

但是这行引发了NullPointerException:

第81行:字符串kontonummer = ve.getValue(context).toString();

0 个答案:

没有答案
相关问题