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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

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

Play Framework

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

Q&A

1回答

2648閲覧

playframework 1.2.7 delete();の使用方法について

kuriboros

総合スコア23

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

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

Play Framework

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

0グッド

0クリップ

投稿2015/12/06 07:48

編集2015/12/06 08:36

webアプリケーションを作成しています。
使用のフレームワークはplayframework1.2.7です。
ブラウザのチェックボックスから、チェックボックスをつけたボックスのIDを
検索して削除する仕組みを考えています。
どこが悪いか分かる方がいらっしゃいましたらご教示頂きたいと思います。
下記の様に実装しています。

【controller】

package controllers;
import java.util.List;

import models.DBregist;
import play.mvc.Controller;

public class Application extends Controller {
// DB情報を削除する
public static void delete(Long id) {
DBregist dbdel = DBregist(id);
dbdel.all();
List<DBregist> dbdels = DBregist.findAll();
render(dbdels);}
}

【views】

#{extends 'main.html' /}
#{set title:'Play Framework' /}

<h1>ユーザー削除</h1> <form method="get" action="@{Application.delete}"> 名前: <input type="text" name="name" /><br/> <table border="1"> <tr><th>名前</th></tr> #{list items:dbdels, as:'dbdel'} <tr> <td><input type="checkbox"></td> <td>${dbdel.name}</td> </tr> #{/list} </table> <input type="submit" value="削除" /> </form>

【model】

package models;

import javax.persistence.Entity;
import javax.persistence.Id;

import play.db.jpa.Model;

@Entity
public class DBregist extends Model {
@Id
public Long id;
public String name;

public DBregist(String name, String message, Long id) { this.id = id; this.name = name; }

}

【route】

GET /delete Application.delete

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

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

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

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

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

guest

回答1

0

いまのやり方だとviewからcontrollerに削除対象となるidが飛ばされないのではないでしょうか。
実際に動作させて検証していませんが、恐らく下のような形で実現できると思います。

まず削除対象となるidをviewに持たせます。

html

1<input type="checkbox" name="deleteId[]" value="${dbdel.id}">

controllerでidを受け取って削除します。

java

1public class Application extends Controller { 2 public static void delete(List<Long> deleteId) { 3 for(Iterator<Long> it = deleteId.iterator; it.hasNext();){ 4 DBregist dbdel = DBregist.findbyId(it.next()); 5 dbdel.delete(); 6 } 7 render(dbdels); 8 } 9}

また現在の実装だとURLさえわかれば誰でもデータを削除できてしまいますので、アプリケーションの目的に応じて何らかのチェックを入れたほうがよいかもしれません。

routeについては/deleteはGETでも動きますが、DELETEとするのが正しい?かもです。
その場合はviewのmethodも変更してください。
https://www.playframework.com/documentation/1.2.7/routes

投稿2015/12/10 00:28

jinco

総合スコア432

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

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

kuriboros

2015/12/10 03:58

ありがとうございました。参考にさせて頂きます。再度、実装して動作確認してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問