頁面流(Page flow)表單驗證

2021-04-19 02:23:10 字數 2859 閱讀 4133

建立web應用的過程中,驗證使用者在html表單中的輸入是最常見的乙個問題。使用者輸入資料必須被驗證從而保證進行業務處理之前資料是正確的。輸入的表單資料可能用於建立或更新資料庫條目、呼叫web服務、或作為業務過程的輸入。基於目前由struts提供的表單驗證框架,頁面流提供了一種簡單易用的服務端驗證方式。

頁面流驗證提供以下功能:

· 使用者表單輸入的服務端驗證

· 用待驗證的表單bean封裝驗證邏輯

· 驗證失敗時自動導航到輸入頁面

· 內建訊息包支援,方便進行國際化

本文假定讀者熟悉頁面流及jsp。本文將介紹建立表單bean和驗證頁面的基本步驟。如果發生驗證錯誤使用者將會得到通知,從而可以修正它們;動作方法被呼叫時可以認為資料是正確的。

request生命週期及驗證

表單驗證針對的是已提交表單bean中的內容。通過jsp頁面的標籤的動作屬性,該bean被間接選中;表單bean與指定動作相關聯。表單bean繼承自com.bea.wlw.netui.pageflow.formdata。為了驗證表單bean,開發人員需要過載validate() 方法並提供驗證邏輯。

圖1演示了request的生命週期以及驗證是如何發生的。當strut的控制器接收到請求時,它將請求傳遞給頁面流requestprocessor。請求處理器的processpopulate 方法首先構造乙個新的表單bean,其中含有來自請求的所有資料條目。此步驟將會建立formdata。然後請求處理器檢查是否為動作啟用了表單驗證。如果驗證被啟用,將會針對該表單bean呼叫validate()方法。如果出現驗證錯誤,控制權將交給乙個輸入頁面,同時轉交的還有使用者輸入的資料以及錯誤資訊。如果沒有發現錯誤,控制權將被傳遞給目標動作從而繼續處理請求。

圖1中的藍色方框代表頁面流**,黑色方框代表使用者**。

圖2——動作源**檢視屬性編輯視窗

上面,我們把validation-error-page 設定成index.jsp。這將開啟該動作的驗證功能。如果發生驗證錯誤,將會顯示index.jsp。

步驟3——建立錯誤訊息文字
錯誤訊息文字是從訊息包中查詢出來的。訊息包被放置在web-inf/classes子目錄下。在本例中,我們建立validation.properties 檔案並將其放在 web-inf/classes/message 目錄,請參見圖3。

圖3——validation.properties

validation.properties 中包含那些將會顯示在或 標籤中的文字。該屬性檔案包含以下條目:
errors.header=
errors.footer=

errors.prefix=

errors.suffix

nullnameerror=the name field must not be null.

uppercasenameerror=the name''must begin

with an upper case letter.

typeerror=the type''must be the value 'foo' or 'bar'

在例子中,我們通過以下語句建立乙個 actionerror :

actionerror("typeerror",type));

字串「typeerror」用於訊息的查詢:

typeerror=the type''must be the value 'foo' or 'bar'

在執行時刻,變數type 替換''處從而生成報告給使用者的完整文字。

步驟4—— 將訊息檔案繫結到頁面流

訊息檔案validation.properties 需要繫結到頁面流,這樣才能在報告訊息給使用者之前進行訊息的查詢。可以通過頁面流的乙個註解來進行繫結。

* @jpf:controller

* @jpf:message-resources resources="messages.validation"

*/public class controller extends pageflowcontroller      

">

negate="true" >

標籤有四個可以定義在訊息包中的特殊屬性:errors.header, errors.footer, errors.prefix, errors.suffi,利用這些屬性可以在顯示的訊息周圍進行格式設定。在本例中,錯誤被顯示在乙個未排序的列表中。而且,標籤允許error.prefix 和error.suffix 定義標記性的標籤。本例中沒有演示這一功能。

結果

圖5是validate()方法生成一堆驗證錯誤之後向使用者顯示的頁面。使用者在表單中輸入非法資料後驗證錯誤被返回,然後請求處理器定向到index.jsp頁面,錯誤資訊被顯示在字段之後以及表單下面。錯誤表單的內容全部被返回,這樣使用者可以只修改那些出錯的字段。

圖5——帶有驗證錯誤的html頁

結論

服務端的使用者輸入驗證需要經歷五個步驟。首先在表單bean中建立乙個validate() 方法,該方法將會驗證使用者輸入並報告錯誤。第二步,必須在接收表單的動作上設定validation-error-page 符號才能啟用表單驗證。第三步,新增錯誤文字到訊息包中。第四步,借助訊息資源註解,訊息包被繫結到頁面流上。最後,在jsp中新增或 標籤,它們將會顯示錯誤文字。頁面流框架會管理所有的驗證呼叫,並在錯誤發生後將控制權路由到輸入頁面,否則路由到目標動作。

python表單驗證 表單驗證

django有乙個form類為我們提供了強大的表單驗證提交。1 建立form from django import forms class commentform forms.form name forms.charfield label 您的姓名 max length 100 email form...

簡易的表單js驗證框架,解決複雜的頁面驗證過程

在從事頁面表單開發的工作中,避免不了的一件繁雜重複的工作就是對表單的控制項驗證,特別是頁面元素比較多的情況下 幾天利用中午的時間寫了乙個簡易的用於表單驗證的js框架,可供有表單開發工作的參考,希望能有更好的想法,共同完善,共同進步!大致的實現方式是,通過表單控制項的 attribute 來進行配置每...

antd 如何清除表單驗證(聯動表單驗證)

備註 投標的3種狀態 當我們使用antd的form表單時,可能會遇到2個表單聯動的情況,試想一下以下場景 投標利率我們設定在 3 7 以內,也就是說,輸入框不能取值的範圍是3 7 符合3 7就觸發不了表單驗證了!當投標狀態是 投標 共三種 時,該投標利率表單驗證生效,如果選擇其他狀態,則不生效,如果...