почему я получаю исключение при вводе данных на локальном хосте "java .lang.IllegalArgumentException: целевой объект не должен быть нулевым"? - PullRequest
0 голосов
/ 07 марта 2020

в этом контроллере, когда 'stdin.save (std);' удален код работает лучше, но когда я добавляю это 'stdin.save (std);' строка "java .lang.IllegalArgumentException: целевой объект не должен быть нулевым", это исключение

package com.access6.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import com.access6.dao.StudentInt;
import com.access6.model.Student;
@RestController
public class StudentContrlr {
@Autowired
StudentInt stdin;
Student std;

@RequestMapping("/")
public ModelAndView home() {
return new ModelAndView("home");
}

@RequestMapping("/addStd")
public ModelAndView addStd(@RequestParam ("id") String id, @RequestParam ("name") String name, 
@RequestParam ("location") String location,ModelMap mp ) {
mp.put("id", id);
mp.put("name", name);
mp.put("location", location);
stdin.save(std);
return new ModelAndView("home");
}
}

модель: @entity не может создать таблицу в базе данных, но соединение работает нормально

package com.access6.model;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Student {
@Id
int id;
String name;
String location;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", location=" + location + "]";
}
}

интерфейс

package com.access6.dao;
import org.springframework.data.repository.CrudRepository;
import com.access6.model.Student;
public interface StudentInt extends CrudRepository<Student, Integer> {
}

Приложение весенней загрузки

package com.access6;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DbConnect2Application {
public static void main(String[] args) {
    SpringApplication.run(DbConnect2Application.class, args);
}
}

application.properties

spring.mvc.view.prefix= /WEB-INF/pages/
spring.mvc.view.suffix= .jsp
spring.h2.console.enabled=true
spring.datasource.platform=h2
spring.datasource.url=jdbc:h2:mem:vinanth

1 Ответ

0 голосов
/ 07 марта 2020

найдите приведенный ниже код.

@RequestMapping("/addStd")
public ModelAndView addStd(@RequestParam ("id") String id, @RequestParam ("name") String name, 
@RequestParam ("location") String location,ModelMap mp ) {

  std = new Student() ;
  std.setId(id);
  std.setName(name);
  std.setLocation(location);

  mp.put("id", id);
  mp.put("name", name);
  mp.put("location", location);
  stdin.save(std);
return new ModelAndView("home");
}

ИЛИ

Используйте modelAttribute для автоматической установки параметров запроса в dto, и здесь имя параметра запроса и имя переменной из dto должны совпадать.

@RequestMapping("/addStd")
public ModelAndView addStd(@ModelAttribute Student std,ModelMap mp ) {

  mp.put("id", std.getId());
  mp.put("name", std.getName());
  mp.put("location", std.getLocation());
  stdin.save(std);
return new ModelAndView("home");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...