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

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

新規登録して質問してみよう
ただいま回答率
85.48%
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回答

2694閲覧

bindFromRequestでnullを返される

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/08 02:49

Play Frameworkの2.5.10を使用しています。
モデル、フォームの実装をしてコンパイルエラーは出ていない状態なのですが、フォームに値を入れて送信ボタンを押しsaveアクションを実行すると、バインドしたリクエストが全てnullで返されてしまいます。

create.scala.html

html

1@(bookForm : Form[Book]) 2 3@import helper._; 4 5<html> 6 <head> 7 <title> 8 新規登録 9 </title> 10 </head> 11 <body> 12 13 <h1>新しい本を登録</h1> 14 @helper.form(action = routes.BooksController.save()){ 15 @helper.inputText(bookForm("id")) 16 @helper.inputText(bookForm("title")) 17 @helper.inputText(bookForm("price")) 18 @helper.inputText(bookForm("author")) 19 <input type="submit" value="送信"> 20 } 21 22 <!--<form action="/books/create" method="POST">--> 23 24 <!--</form>--> 25 </body> 26</html>

BooksController.java

java

1package controllers; 2 3import play.mvc.Controller; 4import play.mvc.Result; 5 6import views.html.books.*; 7 8import java.util.HashSet; 9import java.util.Set; 10 11import models.*; 12 13import play.data.*; 14 15import javax.inject.Inject; 16 17public class BooksController extends Controller{ 18 19 @Inject 20 FormFactory formFactory; 21 22 public Result index(){ 23 Set<Book> books = Book.allBooks(); 24 return ok(index.render(books)); 25 26 } 27 28 public Result create(){ 29 Form<Book> bookForm = formFactory.form(Book.class); 30 return ok(create.render(bookForm)); 31 } 32 33 public Result save(){ 34 Form<Book> bookForm = formFactory.form(Book.class).bindFromRequest(); 35 Book book = bookForm.get(); 36 Book.add(book); 37 System.out.println(book.id + book.title + book.price + book.author); 38 return redirect(routes.BooksController.index()); 39 } 40 41 public Result edit(Integer id){ 42 return TODO; 43 } 44 45 public Result update(){ 46 return TODO; 47 } 48 49 public Result destroy(Integer id){ 50 return TODO; 51 } 52 53 public Result show(Integer id){ 54 return TODO; 55 } 56}

Book.javaのモデルです

Java

1package models; 2 3import java.util.HashSet; 4import java.util.Set; 5 6public class Book{ 7 8 public Integer id; 9 public String title; 10 public Integer price; 11 public String author; 12 13 public Book(){ 14 15 } 16 17 public Book(Integer id, String title, Integer price, String author){ 18 this.id = id; 19 this.title = title; 20 this.price = price; 21 this.author = author; 22 } 23 24 private static Set<Book> books; 25 26 static { 27 books = new HashSet(); 28 books.add(new Book(1, "C++", 10, "ABC")); 29 books.add(new Book(2,"Java", 20, "DEF")); 30 } 31 32 public static void InvalidData(){ 33 34 } 35 36 37 public static Set<Book> allBooks(){ 38 return books; 39 } 40 41 public static Book findById(Integer id) { 42 for (Book book : books) { 43 if (id.equals(book.id)) { 44 return book; 45 } 46 } 47 48 return null; 49 } 50 51 public static void add (Book book){ 52 53 books.add(book); 54 } 55 56 public static boolean remove(Book book){ 57 return books.remove(book); 58 } 59}

イメージ説明

イメージ説明

イメージ説明

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

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

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

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

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

guest

回答1

0

BookFormクラスにセッターが定義されていますか?
私も同様の現象が起きましたが、セッターを定義することで解決出来ました。

投稿2019/12/22 08:57

h_1_de

総合スコア6

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問