0

Me marca error en mi controlador de persona al momento de guardar

java.lang.NullPointerException: null
    at edu.mx.upsrj.egmrepe.controller.Person_controller.savePerson(Person_controller.java:29) ~[classes/:na]

en mi servidor tengo lo siguiente

@Service
public class Menores_service {
    @Autowired
    private MenoresDAO menoresDAO;

    public void saveMenor(Menores menor) {
        menoresDAO.save(menor);
    }
}

Y este es mi controlador y me marca error al guardar en menores

@Controller
public class Person_controller {
    @Autowired
    private Mayores_service mayorService;
    private Menores_service menorService;
    private Menores menor;
    @RequestMapping("/person")
    public String home() {
        return "person_page";
    }
    @RequestMapping(value = "/savePerson", method = RequestMethod.POST)
    public String savePerson(@ModelAttribute(name = "mayor") Mayores mayor) {
        if(mayor.getEdad() >= 18) {
            mayorService.saveMayor(mayor);
        }else{
            menor.setNombre(mayor.getNombre());
            menor.setApellidos(mayor.getApellidos());
            menor.setGender(mayor.getGender());
            menor.setEdad(mayor.getEdad());
            menor.setDob(mayor.getDob());
            menor.setCurp(mayor.getCurp());
            menor.setDomPerson(mayor.getDomPerson());
            menorService.saveMenor(menor);
        }
        return "redirect:/person";
    }
}

Y tengo duda en si el error es algo mas de sintaxis o de codificación

padaleiana
  • 2,175
  • 5
  • 16
  • 24
  • Imprime tu objeto menor, parece que esta llegando como null – 404 Mar 03 '20 at 18:03
  • Te falta el @Autowired en menorService – Pablo Lozano Mar 03 '20 at 18:03
  • [¿Cuál es la solución a todos los errores NullPointerException presentes, pasados y futuros?](https://es.stackoverflow.com/questions/42977/cu%C3%A1l-es-la-soluci%C3%B3n-a-todos-los-errores-nullpointerexception-presentes-pasados)¿Responde esto a tu pregunta? – MrDave1999 Mar 03 '20 at 18:18

1 Answers1

0

Te diré exactamente lo que ya te han dicho.

1.- No estas inyectando tu servicio.

2.- Crea la instancia de la clase Menor

@Controller
public class Person_controller {
    @Autowired
    private Mayores_service mayorService;
    @Autowired
    private Menores_service menorService;
    //private Menores menor; //No es recomendable hacer esto ya que la clase menor se convierte en estatica
    @RequestMapping("/person")
    public String home() {
        return "person_page";
    }
    @RequestMapping(value = "/savePerson", method = RequestMethod.POST)
    public String savePerson(@ModelAttribute(name = "mayor") Mayores mayor) {
        if(mayor.getEdad() >= 18) {
            mayorService.saveMayor(mayor);
        }else{
            Menores menor = new Menor(); //La linea comentada arriba se pasa aquí, asi cada vez que se ejecute creará una nueva instancia.
            menor.setNombre(mayor.getNombre());
            menor.setApellidos(mayor.getApellidos());
            menor.setGender(mayor.getGender());
            menor.setEdad(mayor.getEdad());
            menor.setDob(mayor.getDob());
            menor.setCurp(mayor.getCurp());
            menor.setDomPerson(mayor.getDomPerson());
            menorService.saveMenor(menor);
        }
        return "redirect:/person";
    }
}

Saludos.

Omar
  • 780
  • 1
  • 3
  • 8