при передаче значения идентификатора в контроллер выдается ошибка «Не удалось преобразовать значение типа« java.lang.String »в требуемый тип« int »».
но когда я печатаю System.out.println (studentService.findById (id)), он выдает вывод в терминале как
Необязательно [Student {id = 1, firstName = 'Abhishek', lastName = 'Shukla', филиал = 'CS', год = 4, mobileNumber = '9876543210'}]
Я уже пытался передать идентификатор в виде строки и преобразовать строку в int, используя Integr.parseInt (id) в контроллере, но он выдает ошибку как
"Servlet.service () для сервлета [dispatcherServlet] в контексте с путем [] вызвало исключение [Ошибка обработки запроса; вложенное исключение - java.lang.NumberFormatException: для входной строки:" {id} "] с первопричиной"
<h1>Student Place</h1>
<form name="myForm" action="/student/{id}" >
<table border="1">
<tbody>
<tr>
<td>Student ID :</td>
<td><input type="text" name="id" size="10" /> </td>
</tr>
</tbody>
</table>
<br>
<input type="submit" value="submit" name="submit" /><br>
<input type="reset" value="Rest" name="reset" />
</form>
@Controller
public class StudentController {
@Autowired
private StudentService studentService ;
@GetMapping(value = "/students")
public String index(ModelMap modelMap){
modelMap.put("students" , studentService.findAll());
return "index" ;
}
@GetMapping(value = "/student/{id}")
public String data(@PathVariable("id") int id , ModelMap modelMap){
modelMap.put("students" , studentService.findById(id)) ;
System.out.println(studentService.findById(id));
return "studentbyid" ;
}
@GetMapping(value = "/student")
public String databyid(){
return "student" ;
}
}
public interface StudentService {
public Iterable<Student> findAll() ;
public Optional<Student> findById(int id) ;
}
@Transactional
@Service("studentService")
public class StudentServiceImpl implements StudentService {
@Autowired
private StudentRepository studentRepository ;
@Override
public Iterable<Student> findAll() {
return studentRepository.findAll();
}
public Optional<Student> findById(int id) {
return studentRepository.findById(id);
}
}
@Entity
@Table(name = "student")
public class Student {
@Id
@Column(name="id")
private int id ;
@Column(name="first_name")
private String firstName ;
@Column(name="last_name")
private String lastName ;
@Column(name="branch")
private String branch ;
@Column(name="year")
private int year ;
@Column(name="mobile_number")
private String mobileNumber ;
public Student() {
}
public Student(int id, String firstName, String lastName, String branch, int year, String mobileNumber) {
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
this.branch = branch;
this.year = year;
this.mobileNumber = mobileNumber;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getBranch() {
return branch;
}
public void setBranch(String branch) {
this.branch = branch;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public String getMobileNumber() {
return mobileNumber;
}
public void setMobileNumber(String mobileNumber) {
this.mobileNumber = mobileNumber;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", firstName='" + firstName + '\'' +
", lastName='" + lastName + '\'' +
", branch='" + branch + '\'' +
", year=" + year +
", mobileNumber='" + mobileNumber + '\'' +
'}';
}
}
Страница ошибки Whitelabel
Это приложение не имеет явного сопоставления для / error, поэтому вы видите это как запасной вариант.
Произошла непредвиденная ошибка (тип = неверный запрос, статус = 400).
Не удалось преобразовать значение типа 'java.lang.String' в требуемый тип 'int'; Вложенное исключение - java.lang.NumberFormatException: для входной строки: "{id}"