資料的修正
接下來為保存好得資料作成修正功能吧。這就是將資料的作成和檢索組合起來。換句話說,把要再次編輯的資料藉由檢索取出
然後改變值之後存入的作業。
那麼來製作模板吧。在「views」的「Application」裡作成一個新的「edit.html」檔案,然後加入下面的原始碼。
#{extends 'main.html' /} #{set title:'Home' /} <h1>Editing Message</h1> ${msg} #{if data != null} <form method="post" action="@{Application.edit}"> <input type="hidden" name="id" value="${data.id}" /> <table> <tr><td>id:</td><td>${data.id}</td></tr> <tr><td>name:</td><td><input type="text" name="name" value="${data.name}" /></td></tr> <tr><td>message:</td><td><input type="text" name="message" value="${data.message}" /></td></tr> <tr><td></td><td><input type="submit" value="Submit" /></td></tr> </table> </form> #{/if}
這裡準備了修改特定資料的編輯表單,這個表單裡id號碼是用隱藏起來不給人修改,其他的
name和message用<input type="text">的可編輯顯示。分別把${data}的值設給value的話,編輯的資料值在一
開始就會顯示之前的訊息值。
後來的Controller部份,把再度編輯後的資料取得,作為${data}處理,然後用POST送出的話,這個資料就被
修正、保存了。那麼來實際寫edit方法吧。
public static void edit(long id,String message,String name){ String msg = "Please edit data"; MsgData data = null; data= MsgData.findById(id); if (request.method.equals("POST")) { data.name = name; data.message = message; data.save(); msg = "Data was updated"; } render(data,msg); }
編輯的資料用id這個成員來指定,存取的時候URL會像「http://localhost:9000/edit?id=1」這樣,edit的後面
接著「?id=號碼」這樣的形式來存取該id的資料並顯示出該id的資料內容表單,只要將裡面的內容改寫然後送信就能修
正資料了。
這裡首先先透過GET的存取、藉由引數id的指來取得資料,交由render來處理。從id取得資料只要用findById就可以。
data = MsgData.findById(id);
「findById」是用被指定的id號碼來取出資料。需要注意的是「引數不是int而是long」的這一點。用這樣的方法取出資料
然後改變值保存。POST時的處理就用下面這樣來處理。
data.name = name;
data.message = message;
data.save();
為實例的欄位作新的設定、用save保存。save不只用在加入新的資料,也在這樣資料更新的時候使用。
資料的刪除
剩下的就只有資料的刪除了。這也是直接利用資料的修正的介面。id=xx的形式把成員附加在後面來然後顯示、按下按鈕送
出後就會將那個資料刪除的作業流程。
首先從模板開始。「views」的「Application」裡作成一個「del.html」檔案
#{extends 'main.html' /} #{set title:'Home' /} <h1>Delete Message</h1> ${msg} #{if data != null} <form method="post" action="@{Application.del}"> <input type="hidden" name="id" value="${data.id}" /> <table> <tr><td>id:</td><td>${data.id}「${data.message}」</td></tr> <tr><td></td><td><input type="submit" value="Delete" /></td></tr> </table> </form> #{/if}
基本的形式跟edit.html一樣。不同的地方是表單裡只有送出的id而已。只要削除的id號碼
就足夠了。
接下來在Controller裡準備Application要存取的「del」方法。
public static void del(long id,String message,String name){ String msg = "Do you want to delete data?"; MsgData data = null; data= MsgData.findById(id); if (request.method.equals("POST")) { data.delete(); msg = "data was deleted"; } render(data,msg); }
跟剛才的edit一樣「del?id=1」這樣的URL形式,將id作為成員接在後面來存取後將資料表示出來。確認之後按下按鈕
資料就會被刪除。這裡用MsgData.findBy(id)取得資料然後刪除。
data.delete();
只是這樣就將資料刪除了,相當的單純。
No comments:
Post a Comment