那麼、為MsgData類別準備一個新的應用程式吧,在這裡準備了一個「add」的動作。首先先製作好模板。「views」裡的「Application」內新增一個新的「add.html」文件,然後將如下內容加入:
#{extends 'main.html' /} #{set title:'Home' /} <h1>メッセージの作成</h1> ${msg} <form method="post" action="@{Application.add}"> <table> <tr><td>name:</td><td><input type="text" id="name" name="name" /></td></tr> <tr><td>message:</td><td><input type="text" id~"message" name="message" /></td></tr> <tr><td></td><td><input type="submit" value="送信" /></td></tr> </table> </form>
這次準備了name和message這兩個輸入欄位,傳送目地指定為action="@{Application.add}"。這樣一來我們知道只要在Application類別裡準備好add方法就可以了。
這樣子模板就完成了,可是只有這樣子似乎讓人覺得少了些什麼、那麼讓我們使用Stylesheet吧。Play!裡像Stylesheet這樣的靜態檔案是配置在「public」資料夾內。在這裡面有個名為「stylesheets」的資料夾,在裡面作成一個「main.css」文件。這個是使用標準作成的Stylesheet的文件檔。把這個打開之後,加入下面的內容:
body { font-size:10pt; background-color:#F6FFFF; color:#003366; } h1 { font-size:12pt; background-color:#CCDDFF; padding: 3px; }
因為這是Stylesheet,內容可以因人而異,請自己適當的調整。
那麼,接下來來製作Controller。來定義Application類別裡的add方法吧。
public static void add(String message,String name){ String msg = "Please input data"; if (request.method.equals("POST")) { MsgData data = new MsgData(message,name); data.save(); msg = "data is saved"; } render(msg); }
這樣子就完成了。嘗試著存取http://localhost:9000/application/add看看就會表示出一個表單,在這裡面輸入值然後傳送的話,資料就會被保存起來(只是還沒顯示)。每次位置都得要輸入/application/add讓人覺得有點麻煩、所以我們在「routes」檔案裡加入下面這行內容:
* /{action} Application.{action}
這樣一來、Application類別的動作方法就全部都被映射到根目錄了。以後想要呼叫add的話就用http://localhost:9000/add
add方法的流程
那麼,來看看這裡的處理過程吧。首先、方法add(String message, String name)就像這樣有引數被設定好,
以動作方法而言,被送出的參數會將值交給同名的變數。這樣一來從表單送出的message和name的值就能作為引數取得
request.method.equals("POST")是為了要確認是否是POST送出,true的話就將MsgData保存到資料庫裡
MsgData data = new MsgData(message,name); data.save();
這裡就連說明都不用說明了。用new MsgData來作成實例,然後呼叫出「save」方法。這樣一來MsgData的實例就被保存
在資料庫裡了。這就是Model類別的威力。為了將Model保存到資料庫的具體程式碼完全都不需要特別敘述什麼。
原文參考:http://codezine.jp/article/detail/4751?p=2
No comments:
Post a Comment