web-dev-qa-db-ja.com

メソッドパラメータタイプ[Java.lang.Integer]のURIテンプレート変数 'studentId'がありません-Spring MVC

特定のビューにリダイレクトしようとすると、このエラーが発生します。

1つのハンドラーメソッドで:

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

しかし、このハンドラメソッドでパラメータ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";
}

ここで何が欠けていますか?

15
just_a_girl

パス変数の名前を指定しない場合、Springはパラメーターの名前を使用しようとします。

したがって、

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

SpringはstudentIdというパス変数がある間、studentというパス変数を見つけようとします。

値属性を追加するだけです

@PathVariable("student") Integer studentId

または、パラメータ名を変更します。

28