play scala框架學習04 表單

2021-07-14 06:54:57 字數 3226 閱讀 7837

表單(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自動生成。 表單

資料提交

TinkPHP框架學習 04命名空間

1 命名空間 2 呼叫其他控制器的方法 3 u 函式 一命名空間 看做是虛擬目錄 thinkphp library 初始命名空間 在library資料夾下的所有資料夾都稱作根命名空間,由兩部分構成 1.library目錄下的所有資料夾 2.應用程式目錄裡面的模組名 定義當前類的命名空間 namesp...

Python學習筆記 04 Django框架簡介

目錄1 什麼是django?2 django框架的開發環境搭建3 django操作mysql資料庫簡介4 功能強大的django管理工具應用 django是應用於web開發的高階動態語言框架,最初起源於美國芝加哥的python使用者組,具有新聞從業背景的adrian holovaty是django框...

Python學習筆記 04 Django框架簡介

目錄1 什麼是django?2 django框架的開發環境搭建3 django操作mysql資料庫簡介4 功能強大的django管理工具應用 django是應用於web開發的高階動態語言框架,最初起源於美國芝加哥的python使用者組,具有新聞從業背景的adrian holovaty是django框...