SimpleFormController处理流程

阅读更多
SimpleFormController往上繼承自AbstractFormController,而又繼承自AbstractController,
這是開始實作Controller介面的基底類別,再往上的兩個類別各司WebApplicationContext與Http response的資源。

  對於簡單的表單需求,我們通常透過繼承SimpleFormController,並覆寫其onSumit()方法來完成表單功能,
而實際上真正的表單處理流程定義在AbstractFormController

  這邊說明三個我覺得比較常用且不複雜的方法,在繼承了SimpleFormController(AbstractFormController)之後,
您可以覆寫這些方法:formBackingObject()、referenceData()、onBindAndValidate()。

  當瀏覽器使用GET方法向Action發出請求時,會調用formBackingObject()方法,您可以在這個方法中預先設定好表單物件,在表單網頁中就會顯示表單的預設值,

在使用者送出資料之後,如果sessionForm為false,則會再呼叫formBackingObject()方法取得表單物件,若sessionForm設定為true,則會試著有session中找尋表單物件。

您可以在referenceData()中定義一些JSP頁面可以參考到的參數,

onBindAndValidate()就如其名所示,當表單物件的資料已經綁定,並且還沒開始驗證之前,您可以試著在這個方法中作一些預處理,例如進行字母大小寫轉換,附帶一些額外的資訊等等

url请求来到时,这样处理: (即get方式获得的参数)
a) 请求传递给一个controller对象
b) 调用formBackingObject()方法,创建一个command对象的实例。
c) 调用initBinder(),注册需要的类型转换器
d) 调用showForm()方法,返回准备呈现给用户的视图
e) 调用referenceData()方法,准备给用户显示相关的数据。如用户登录需要选择的年度信息
f) 返回formView指定的视图
表单请求来到时,这样处理: (以post获得的参数)
a) 调用formBackingObject()方法,创建一个command对象的实例。
b) 将请求传来的参数写入command对象
c) 如果设置为要求验证,则调用validator类进行数据验证
d) 调用onBindAndValidate()方法,该方法允许自定义数据绑定和校验处理
e) 调用onSubmit()方法,进行业务逻辑处理

你可能感兴趣的:(JSP,C,C++,C#,F#)