モデルを定義するだけで、エンティティの作成・更新画面が自動的に提供されることを確認しました。それぞれの画面ではエンティティ成・更新を入力、確認、表示の3画面を使って行うことができました。また、エンティティの作成・更新画面のカスタム画面を定義することも可能になっています。
実行
それではエンティティの削除を実行してみましょう。まず削除するIDを削除画面から入力する方式です。
エンティティ削除ページ
以下のようにリソース名の後ろに「_delete_」をつけてアクセスします。
$ curl http://localhost:8080/web/HelloResource/product/_delete_
次のようにエンティティ削除に必要なIDを指定するためのFORMの画面が表示されました。
ビューの定義はしていないので、Cozy Webのデフォルト入力画面が表示されます。
<?xml version="1.0"?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="keywords" content="TBD"/>
<meta name="description" content="TBD"/>
<meta name="robots" content="noindex,nofollow"/>
<meta name="author" content="TBD"/>
</head>
<body>
<form action="" method="POST">
<table class="">
<tbody>
<tr class="">
<th scope="row" class="">Id</th>
<td class="">
<input type="text" name="id" value=""/>
</td>
</tr>
</tbody>
</table>
<table>
<tr>
<td>
<input type="submit" name="$submit" value="Input"/>
</td>
<td>
<input type="submit" name="$submit" value="Cancel"/>
</td>
</tr>
</table>
<input type="hidden" name="$scenario" value="{"name":"update-entity","state":"input","entity":"product","schema":{"columns":[{"name":"id","datatype":"token","multiplicity":"1"}, {"name":"name","datatype":"string","multiplicity":"1"}, {"name":"price","datatype":"int","multiplicity":"1"}]},"data":{}}"/>
</form>
</body>
</html>
このページでは以下のボタンが表示されています。
- Input
- エンティティ削除
- Cancel
- キャンセル Inputボタンを押下するとエンティティ削除のための次の画面に遷移します。
Cancelボタンを押下するとトップページに戻ります。
削除確認ページ
エンティティ削除ページでInputボタンが押されたので、削除確認画面が表示されます。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="keywords" content="TBD"/>
<meta name="description" content="TBD"/>
<meta name="robots" content="noindex,nofollow"/>
<meta name="author" content="TBD"/>
</head>
<body>
<form action="" method="POST">
<table class="">
<tbody>
<tr class="">
<th scope="row" class="">Id</th>
<td class="">1</td>
</tr>
<tr class="">
<th scope="row" class="">Name</th>
<td class="">Apple</td>
</tr>
<tr class="">
<th scope="row" class="">Price</th>
<td class="">300</td>
</tr>
</tbody>
</table>
<input type="hidden" name="id" value="5"/>
<input type="hidden" name="name" value="Banana"/>
<input type="hidden" name="price" value="250"/>
<table>
<tr>
<td>
<input type="submit" name="$submit" value="Ok"/>
</td>
<td>
<input type="submit" name="$submit" value="Back"/>
</td>
<td>
<input type="submit" name="$submit" value="Cancel"/>
</td>
</tr>
</table>
<input type="hidden" name="$scenario" value="{"name":"update-entity","state":"confirm","entity":"product","schema":{"columns":[{"name":"id","datatype":"token","multiplicity":"1"}, {"name":"name","datatype":"string","multiplicity":"1"}, {"name":"price","datatype":"int","multiplicity":"1"}]},"data":{"name":"Banana","$scenario":"{\"name\":\"update-entity\",\"state\":\"input\",\"entity\":\"product\",\"schema\":{\"columns\":[{\"name\":\"id\",\"datatype\":\"token\",\"multiplicity\":\"1\"},{\"name\":\"name\",\"datatype\":\"string\",\"multiplicity\":\"1\"},{\"name\":\"price\",\"datatype\":\"int\",\"multiplicity\":\"1\"}]},\"data\":{}}","price":"250","id":"5","$submit":"Input"}}"/>
</form>
</body>
</html>
画面に削除予定のエンティティのデータが表示されます。この結果を確認した上で、以下のいずれかのボタンを押下します。
- OK
- 確認OK
- Back
- 入力画面にモデル
- Cancel
- キャンセル
Okボタンを押下するとエンティティの削除を行い、その結果を表示する画面に遷移します。
結果ページ
削除確認画面でOKボタンが押されたので、エンティティの削除が行われ、削除されたエンティティの情報表示ページに移ります。
<?xml version="1.0"?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="keywords" content="TBD"/>
<meta name="description" content="TBD"/>
<meta name="robots" content="noindex,nofollow"/>
<meta name="author" content="TBD"/>
</head>
<body>
<form action="" method="POST">
<table class="">
<tbody>
<tr class="">
<th scope="row" class="">Id</th>
<td class="">1</td>
</tr>
<tr class="">
<th scope="row" class="">Name</th>
<td class="">Apple</td>
</tr>
<tr class="">
<th scope="row" class="">Price</th>
<td class="">100</td>
</tr>
</tbody>
</table>
<input type="hidden" name="id" value="1"/>
<input type="hidden" name="name" value="Apple"/>
<input type="hidden" name="price" value="100"/>
<table>
<tr>
<td>
<input type="submit" name="$submit" value="Ok"/>
</td>
</tr>
</table>
<input type="hidden" name="$scenario" value="{"name":"update-entity","state":"show","entity":"product","schema":{"columns":[{"name":"id","datatype":"token","multiplicity":"1"}, {"name":"name","datatype":"string","multiplicity":"1"}, {"name":"price","datatype":"int","multiplicity":"1"}]},"data":{"name":"Banana","$scenario":"{\"name\":\"update-entity\",\"state\":\"confirm\",\"entity\":\"product\",\"schema\":{\"columns\":[{\"name\":\"id\",\"datatype\":\"token\",\"multiplicity\":\"1\"},{\"name\":\"name\",\"datatype\":\"string\",\"multiplicity\":\"1\"},{\"name\":\"price\",\"datatype\":\"int\",\"multiplicity\":\"1\"}]},\"data\":{\"name\":\"a\",\"$scenario\":\"{\\\"name\\\":\\\"update-entity\\\",\\\"state\\\":\\\"input\\\",\\\"entity\\\":\\\"product\\\",\\\"schema\\\":{\\\"columns\\\":[{\\\"name\\\":\\\"id\\\",\\\"datatype\\\":\\\"token\\\",\\\"multiplicity\\\":\\\"1\\\"},{\\\"name\\\":\\\"name\\\",\\\"datatype\\\":\\\"string\\\",\\\"multiplicity\\\":\\\"1\\\"},{\\\"name\\\":\\\"price\\\",\\\"datatype\\\":\\\"int\\\",\\\"multiplicity\\\":\\\"1\\\"}]},\\\"data\\\":{}}\",\"price\":\"10\",\"id\":\"5\",\"$submit\":\"Input\"}}","price":"250","id":"5","$submit":"Ok"}}"/>
</form>
</body>
</html>
削除したエンティティのデータが表示されます。この結果を確認した後に、OKボタンを押下するとトップページに戻ります。
<?xml version="1.0"?>
<!DOCTYPE html>
<html>
<head>
<title>HelloResource</title>
</head>
<body>
<ul>
<li>
<a href="product">List</a>
</li>
<li>
<a href="product/_create_">Create</a>
</li>
<li>
<a href="product/_update_">Update</a>
</li>
<li>
<a href="product/_delete_">Delete</a>
</li>
</ul>
</body>
</html>
確認
確認のためにリソースproductの一覧を表示してみましょう。
$ curl http://localhost:8080/web/HelloResource/product
以下のようにオブジェクトID 1のAppleが削除されました。
<?xml version="1.0"?>
<!DOCTYPE html>
<html>
<head>
<title>Product List</title>
</head>
<body>
<table class="">
<caption class="">product</caption>
<thead class="">
<tr class="">
<th scope="col" class="">Id</th>
<th scope="col" class="">Name</th>
<th scope="col" class="">Price</th>
</tr>
</thead>
<tbody class="">
<tr data-href="product/2.html">
<td class="">2</td>
<td class="">Orange</td>
<td class="">350</td>
</tr>
<tr data-href="product/3.html">
<td class="">3</td>
<td class="">Peach</td>
<td class="">400</td>
</tr>
<tr data-href="product/4.html">
<td class="">4</td>
<td class="">Banana</td>
<td class="">250</td>
</tr>
</tbody>
</table>
</body>
</html>
実行/ID指定
続けてIDを指定したエンティティの更新を実行してみましょう。
エンティティ更新ページ
IDを指定してリエンティティの更新を行ってみます。IDが1の場合は以下になります。
$ curl http://localhost:8080/web/HelloResource/product/1/_delete_
削除確認ページ
エンティティ削除ページでInputボタンが押されたので、削除確認画面が表示されます。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="keywords" content="TBD"/>
<meta name="description" content="TBD"/>
<meta name="robots" content="noindex,nofollow"/>
<meta name="author" content="TBD"/>
</head>
<body>
<form action="" method="POST">
<table class="">
<tbody>
<tr class="">
<th scope="row" class="">Id</th>
<td class="">1</td>
</tr>
<tr class="">
<th scope="row" class="">Name</th>
<td class="">Apple</td>
</tr>
<tr class="">
<th scope="row" class="">Price</th>
<td class="">300</td>
</tr>
</tbody>
</table>
<input type="hidden" name="id" value="5"/>
<input type="hidden" name="name" value="Banana"/>
<input type="hidden" name="price" value="250"/>
<table>
<tr>
<td>
<input type="submit" name="$submit" value="Ok"/>
</td>
<td>
<input type="submit" name="$submit" value="Back"/>
</td>
<td>
<input type="submit" name="$submit" value="Cancel"/>
</td>
</tr>
</table>
<input type="hidden" name="$scenario" value="{"name":"update-entity","state":"confirm","entity":"product","schema":{"columns":[{"name":"id","datatype":"token","multiplicity":"1"}, {"name":"name","datatype":"string","multiplicity":"1"}, {"name":"price","datatype":"int","multiplicity":"1"}]},"data":{"name":"Banana","$scenario":"{\"name\":\"update-entity\",\"state\":\"input\",\"entity\":\"product\",\"schema\":{\"columns\":[{\"name\":\"id\",\"datatype\":\"token\",\"multiplicity\":\"1\"},{\"name\":\"name\",\"datatype\":\"string\",\"multiplicity\":\"1\"},{\"name\":\"price\",\"datatype\":\"int\",\"multiplicity\":\"1\"}]},\"data\":{}}","price":"250","id":"5","$submit":"Input"}}"/>
</form>
</body>
</html>
画面に削除予定のエンティティのデータが表示されます。この結果を確認した上で、以下のいずれかのボタンを押下します。
- OK
- 確認OK
- Back
- 入力画面にモデル
- Cancel
- キャンセル
Okボタンを押下するとエンティティの削除を行い、その結果を表示する画面に遷移します。
結果ページ
削除確認画面でOKボタンが押されたので、エンティティの削除が行われ、削除されたエンティティの情報表示ページに移ります。
<?xml version="1.0"?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="keywords" content="TBD"/>
<meta name="description" content="TBD"/>
<meta name="robots" content="noindex,nofollow"/>
<meta name="author" content="TBD"/>
</head>
<body>
<form action="" method="POST">
<table class="">
<tbody>
<tr class="">
<th scope="row" class="">Id</th>
<td class="">1</td>
</tr>
<tr class="">
<th scope="row" class="">Name</th>
<td class="">Apple</td>
</tr>
<tr class="">
<th scope="row" class="">Price</th>
<td class="">100</td>
</tr>
</tbody>
</table>
<input type="hidden" name="id" value="1"/>
<input type="hidden" name="name" value="Apple"/>
<input type="hidden" name="price" value="100"/>
<table>
<tr>
<td>
<input type="submit" name="$submit" value="Ok"/>
</td>
</tr>
</table>
<input type="hidden" name="$scenario" value="{"name":"update-entity","state":"show","entity":"product","schema":{"columns":[{"name":"id","datatype":"token","multiplicity":"1"}, {"name":"name","datatype":"string","multiplicity":"1"}, {"name":"price","datatype":"int","multiplicity":"1"}]},"data":{"name":"Banana","$scenario":"{\"name\":\"update-entity\",\"state\":\"confirm\",\"entity\":\"product\",\"schema\":{\"columns\":[{\"name\":\"id\",\"datatype\":\"token\",\"multiplicity\":\"1\"},{\"name\":\"name\",\"datatype\":\"string\",\"multiplicity\":\"1\"},{\"name\":\"price\",\"datatype\":\"int\",\"multiplicity\":\"1\"}]},\"data\":{\"name\":\"a\",\"$scenario\":\"{\\\"name\\\":\\\"update-entity\\\",\\\"state\\\":\\\"input\\\",\\\"entity\\\":\\\"product\\\",\\\"schema\\\":{\\\"columns\\\":[{\\\"name\\\":\\\"id\\\",\\\"datatype\\\":\\\"token\\\",\\\"multiplicity\\\":\\\"1\\\"},{\\\"name\\\":\\\"name\\\",\\\"datatype\\\":\\\"string\\\",\\\"multiplicity\\\":\\\"1\\\"},{\\\"name\\\":\\\"price\\\",\\\"datatype\\\":\\\"int\\\",\\\"multiplicity\\\":\\\"1\\\"}]},\\\"data\\\":{}}\",\"price\":\"10\",\"id\":\"5\",\"$submit\":\"Input\"}}","price":"250","id":"5","$submit":"Ok"}}"/>
</form>
</body>
</html>
削除したエンティティのデータが表示されます。この結果を確認した後に、OKボタンを押下するとトップページに戻ります。
<?xml version="1.0"?>
<!DOCTYPE html>
<html>
<head>
<title>HelloResource</title>
</head>
<body>
<ul>
<li>
<a href="product">List</a>
</li>
<li>
<a href="product/_create_">Create</a>
</li>
<li>
<a href="product/_update_">Update</a>
</li>
<li>
<a href="product/_delete_">Delete</a>
</li>
</ul>
</body>
</html>