Play Framework 2.5.10 と
java version "1.8.0_191" を利用しています。
ユーザー情報を更新するページを作成し、いざ更新ボタンを押してみると、[Cannot parse parameter id as Int: For input string: "edit"]
、と返されてしまいます。どのようにすれば安全にidを認識させれるのでしょうか?使用パッケージにモデル内の方からIdの型Integr型からをLong型,Int型にすることはできません。
試したことは下記に記述します。
UserController
Java
1... 2public Result edit(Integer id){ 3 User user = User.find.byId(id); 4 if(user == null){ 5 return notFound("ユーザーが見つかりません"); 6 } 7 Form<User>userForm = formFactory.form(User.class).fill(user); 8 return ok(edit.render(userForm)); 9 } 10 11public Result update(){ 12 User user = formFactory.form(User.class).bindFromRequest().get(); 13 System.out.println(user); 14 User oldUser = User.find.byId(user.id); 15 ![イメージ説明](b30c74289eb646d466ba91966691e7b1.jpeg) if(oldUser==null){ 16 flash("danger", "ユーザーが見つかりません"); 17 return badRequest(); 18 } 19 20 oldUser.name = user.name; 21 oldUser.update(); 22 flash("ユーザー情報を更新しました"); 23 return redirect(routes.UserController.index()); 24 } 25...
routes
# ユーザー用 GET /users controllers.UserController.index() GET /users/create controllers.UserController.create() GET /users/:id controllers.UserController.show(id: Integer) GET /users/edit/:id controllers.UserController.edit(id: Integer) PUT /users/edit controllers.UserController.update() POST /users/create controllers.UserController.save() DELETE /users/delete/:id controllers.UserController.destroy(id: Integer)
↓↓
↓↓
試したこと
単純にroutes側の
GET /users/edit/:id controllers.UserController.edit(id: Integer)
を
GET /users/edit/:id controllers.UserController.edit(id: Int)
に変えて実行。
=> 同じくBadRequestです
GET /users/edit/:id controllers.UserController.edit(id: Integer)
の/edit/:id
部分に
正規表現をかけ、不正な値にならないようにできるか実行。
=>同じくBadRequestです
念の為、
<input type="submit" value="更新">
を
<input type="submit" value="edit">
に変更し、実行
=> はやり変わらずBadRequestです
ご教授お願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。