[Java/JSP] Nie rozumiem dlaczego mam NullPointerException


(MrGalek) #1

Witam
Klepie sobie z ciekawości prosty kod w Javie/JSP. Mam taki problem ze dostaje Nulla i nie mam pojęcia dlaczego. Mianowicie:

mam klase Mock DAO:

private Map<Integer,User> osoby;
private Map<Integer,Auto> auta;
   
	public MockDAO() 
    {
    osoby = new HashMap();
	auta = new HashMap();
	
	Auto Audi = new Auto();
	Audi.setNazwa("Audi A8");
	Auto Ford = new Auto();
	Ford.setNazwa("Ford Sierra");
	
	User u = new User();
	u.setName("Jan");
	u.setNazwisko("Kowalski");

	
	u.getAuta().add(Audi);
	u.getAuta().add(Ford);
	
	osoby.put(0, u);

}
     @Override
    public String getNaziwskoByImie(String imie) {
	// TODO Auto-generated method stub
	return osoby.get(imie).getNazwisko();
}

oraz w pliku JSP

  <% String s = dao.getNaziwskoByImie("Jan");
  out.write(s); %>

fasolka jest oczywiście dodana, tak samo to MockDao tez ma poprawny interfejs. Nie wiem co jest zle ale dostaje na na linijce w plisku JSP ze

Servlet.service() for servlet [jsp] in context with path [/nauka] threw exception 
[java.lang.NullPointerException] with root cause
java.lang.NullPointerException
at dao.mockdb.MockDAO.getNaziwskoByImie(MockDAO.java:84)

Jeżeli ktoś mógłby pomóc byłoby fajnie :slight_smile:
Pozdrawiam


(FadeMind) #2
User u = new User();
	u.setName("Jan");
	u.setNazwisko("Kowalski");

vs

public String getNaziwskoByImie(String imie) {

(Fizyda) #3

Musisz przeiterować po mapie osoby i znaleźć osobę o danym imieniu. Jako drugi element mapy nie masz Stringa tylko obiekt klasy User, a przeszukujesz ją po stringu.

Masz źle napisaną metodę:

@Override
public String getNaziwskoByImie(String imie) {
	// TODO Auto-generated method stub
	return osoby.get(imie).getNazwisko();
}

(MrGalek) #4

czaje chyba, zmieniłem na razie na sztywno na

return osoby.get(0).getNazwisko();

wiec chyba powinien zawsze wyrzucać to co w mapie jest pod kluczem 0, ale nadal to samo.


(MrGalek) #5

Dobra działa, teraz był inny błąd jeszcze ale naprawiłem, dzięki za pomoc :smile: