缺少方法参数类型[java.lang.Integer]的URI模板变量'studentId' - Spring MVC

jus*_*irl 14 java uri spring-mvc

当我尝试重定向到某个视图时,我收到此错误.

在一个处理程序方法我有:

// get student ID, add it to model, and return redirect URI
Integer studentId = student.getStudentId();
model.addAttribute("studentId", studentId);
return "redirect:/students/{studentId}";
Run Code Online (Sandbox Code Playgroud)

但是我没有studentId在这个处理程序方法中获取参数:

@RequestMapping(value="/{student}", method = RequestMethod.GET)
public String getStudent(@PathVariable Integer studentId, Model model) {

    Student student = studentService.get(studentId);
    model.addAttribute("student", student);

    return "student";
}
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

Sot*_*lis 28

如果未指定路径变量的名称,Spring会尝试使用参数的名称.

因此在

@RequestMapping(value="/{student}", method = RequestMethod.GET)
public String getStudent(@PathVariable Integer studentId, Model model) {
Run Code Online (Sandbox Code Playgroud)

studentId当你有一个名为的路径变量时,Spring会尝试找到一个被调用的路径变量student.

只需添加一个值属性即可

@PathVariable("student") Integer studentId
Run Code Online (Sandbox Code Playgroud)

或更改参数名称.