質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Scala

ScalaはJava仮想マシンで動作を行うオブジェクト指向型プログラミング言語の1つです。静的型付けの関数型言語で、コンパイルエラーの検出に強みがあります。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Play Framework

Play Frameworkは、現代の web アプリケーション開発に必要なコンポーネント及び API を統合した生産性の高い Java と Scala の web アプリケーションフレームワークです。

Play Framework 2

Play Framework 2はPlayのメジャーバージョンです。現代の web アプリケーション開発に必要なコンポーネント及び API を統合した生産性の高い Java と Scala の web アプリケーションフレームワークです。

Q&A

解決済

1回答

2041閲覧

IdがInt型で受け取れない PlayFramework

t.s_k

総合スコア61

Scala

ScalaはJava仮想マシンで動作を行うオブジェクト指向型プログラミング言語の1つです。静的型付けの関数型言語で、コンパイルエラーの検出に強みがあります。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Play Framework

Play Frameworkは、現代の web アプリケーション開発に必要なコンポーネント及び API を統合した生産性の高い Java と Scala の web アプリケーションフレームワークです。

Play Framework 2

Play Framework 2はPlayのメジャーバージョンです。現代の web アプリケーション開発に必要なコンポーネント及び API を統合した生産性の高い Java と Scala の web アプリケーションフレームワークです。

0グッド

0クリップ

投稿2018/12/09 13:40

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)

models
イメージ説明

↓↓
↓↓

イメージ説明

イメージ説明

試したこと

単純に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です

ご教授お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

routesファイルにてルート変更で無事に通りました
PUT /users/edit
=>
POST /users/edit

下手なこと言えないですが、Play Framework 2.5でもバージョンによって挙動が変わるのかな?
PUTを利用するにはビュー側で少し変更する必要があるのかinputでなくbuttonを利用すれば可能かのかよくわからない状況です。

更新なのにPOSTなのも少し違和感が残りました。

投稿2018/12/10 01:29

t.s_k

総合スコア61

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問