來玩Play框架04 表單

2021-09-08 10:14:33 字數 3236 閱讀 5809

表單(form)是最常見的從客戶往伺服器傳遞資料的方式。play框架提供了一些工具。它們可以從表單中提取資料,驗證提交資料的合法性,或者在檢視中顯示表單。我先來介紹最簡單的使用表單提交資料的方式。 

doctype html

>

<

html

>

<

body

>

<

form

method

="post"

action

="/postform"

>

<

input

type

="text"

name

="content"

>

input

>

<

input

type

="submit"

>

input

>

form

>

body

>

html

>

public

static

result form()

在routes中增加導航

頁面如下:

dynamicform和form都來自play.data。form.form().bindformrequest()從請求中提取表單資訊,並放入到dynamicform型別的in物件中。

我上面用get()方法,來提取表單中不同名字的輸入欄。比如上面的"content"。postform()動作把表單中填寫的內容直接顯示。

增加routes記錄

在/form的頁面下輸入任意字串並提交,檢視效果。

我介紹了表單最基本的使用方式。下面了解play框架提供的其它的表單工具。

在動作內部,可以建立乙個物件來指代表單。表單的每個輸入欄為表單物件的乙個屬性。我可以通過增加標註(annotation)的方法,驗證表單的輸入(form validation)。

doctype html

>

<

html

>

<

body

>

<

form

method

="post"

action

="/postform"

>

<

label

>email

label

>

<

input

type

="email"

name

="email"

>

<

label

>password

label

>

<

input

type

="password"

name

="password"

>

<

label

>comment

label

>

<

input

type

="text"

name

="comment"

>

<

input

type

="submit"

>

form

>

body

>

html

>

這個表單有三個輸入欄,名字分別為email, password和comment。

package

util;

import

play.data.validation.constraints.email;

import

play.data.validation.constraints.required;

public

class

user

user類指代乙個表單的資料。我還為兩個屬性增加了標註。play伺服器可以據此驗證輸入的合法性。比如@email的限定就要求輸入為"*@*"的形式。@required則要求輸入欄不為空。如果違反這些限定,那麼play將丟擲異常。

修改動作postform()。user類的物件user用來儲存表單資料。

public

static

result postform()

最後的ok()中呼叫了表單物件中儲存的資料。 

分別輸入合法和不合法的資料,觀察play返回的頁面。

我上面手動建立模板中的表單,並保持檢視中的表單和表單物件一致。我還可以在模板中直接呼叫表單物件。這樣做,能讓檢視中的表單和表單物件自動的保持一致。

修改form.scala.html為

@(userform: form[util.user])

doctype html

>

<

html

>

<

body

>

@helper.inputtext(userform("email"))

@helper.inputpassword(userform("password"))

@helper.inputtext(userform("comment"))

<

input

type

="submit"

>}

body

>

html

>

這裡使用了play所提供的helper工具。helper可以在表單中增加表單form,再加入不同型別的輸入欄,比如inputtext和inputpassword。

修改原有的動作form()

public

static

result form()

這裡,表單物件作為引數傳遞給模板。最後的html頁面中的表單,將由play自動生成。

表單 資料提交

Play框架中快取的應用

play.cache.cache類提供了一系列訪問快取的api,包含了完整的設定 替換和獲取資料的方法 public static void showproduct string id render product public static void addproduct string name,...

開始來玩 jBPM

hibernate configuration session factory property name hibernate.query.substitutions true 1,false 0 property session factory hibernate configuration 主要...

來玩一玩Linux常見命令

這次我們一起來玩一玩常見的linux相關命令,有點意思 那麼我們解釋一下這些 root代表當前登入使用者,localhost代表主機名,代表當前主機目錄,代表使用者許可權 表示超級使用者,表示普通使用者 我們首先看一下根目錄 下的 bin 和 sbin 在user下也有bin和sbin 看看兩者的區...