`
dq1618
  • 浏览: 57667 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

SimpleFormController流程

阅读更多

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

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

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

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

java 代码
  1. protected Object formBackingObject(HttpServletRequest request) throws Exception {   
  2.     LoginForm loginForm = new LoginForm();   
  3.     loginForm.setUsername("guest");   
  4.     loginForm.setPassword("guest");   
  5.   
  6.     return loginForm;   
  7. }  

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

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

java 代码
  1. protected Map referenceData(HttpServletRequest request) throws Exception {   
  2.     Map ref = new HashMap();   
  3.     ref.put("defalutUser""guest");   
  4.   
  5.     return ref;   
  6. }  

 

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

java 代码
  1. protected void onBindAndValidate(HttpServletRequest request, Object command, BindException errors) throws Exception {   
  2.  }  

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

分享到:
评论
3 楼 xnxylxh 2010-09-30  
谢谢  辛苦了哈
2 楼 chenjianjx 2008-09-23  
不错。不过对 onBindAndValidate()有疑义:似乎是在校验之后,而不是在校验之前。
官方文档说:
Called on each submit, after standard binding and validation, but before error evaluation


现在问题是:“error evaluation” 是什么?
1 楼 ziye 2007-10-24  
总算搞明白这个流程了 谢谢

相关推荐

    一个最简单的SimpleFormController使用

    8. **与现代Spring MVC的区别**:虽然`SimpleFormController`简化了许多处理流程,但在Spring 3.0之后,推荐使用基于注解的控制器(`@Controller`),配合`@RequestMapping`、`@ModelAttribute`等注解实现更灵活、更...

    Spring MVC控制器之SimpleFormController使用

    在Java Web开发中,Spring MVC框架是一个非常流行的MVC(模型-...但是,理解`SimpleFormController`的工作方式可以帮助我们更好地掌握Spring MVC的核心概念,以及框架如何帮助我们管理Web应用中的数据流和控制流程。

    Spring-WebFlow入门中文文档

    Spring MVC 提供了一些控制器,如 SimpleFormController 和 AbstractWizardController,但它们仍然没有完全解决页面流程的管理问题。 Spring Web Flow 提供了一种统一的方法来定义和实现页面流程,使得流程逻辑独立...

    SPRING WEB-FLOW入门教程

    Spring MVC虽然提供了表单控制器(如SimpleFormController和AbstractWizardController),但它们仍然局限在单个请求级别的控制。相比之下,Spring Web Flow提供了一种更高级别的解决方案,它允许开发者以声明式的...

    外文翻译-Spring的web-MVC-构架模式讲解学习.pdf

    - **Controllers**:控制器是业务逻辑与视图之间的桥梁,可以是AbstractController、AbstractCommandController、SimpleFormController等基类的实例,它们处理请求并返回ModelAndView对象,定义了业务逻辑和视图...

    使用 Spring 2.5 基于注解驱动的 Spring MVC.doc

    在 Spring 2.5 版本中,Spring MVC 带来了革命性的变化,引入了注解驱动的功能,极大地简化了开发流程,提高了开发效率。本文将深入探讨这些注解的使用,帮助开发者理解如何利用注解配置替代传统的基于 XML 的 ...

    外文翻译-Spring的web MVC 构架模式.pdf

    Spring提供了多种控制器基类,如`AbstractController`、`AbstractCommandController`、`MultiActionController`、`SimpleFormController`和`AbstractWizardFormController`,以适应不同层次的控制需求。与Struts不同...

    外文翻译Spring地web MVC 构架模式.pdf

    控制器可以是简单接口的实现,如`ModelAndView handleRequest(request, response)`,也可以是更复杂的控制器类,如AbstractController、SimpleFormController等。Spring的数据绑定机制非常灵活,可以处理校验错误,...

    springmvc非注解controller控制器

    在Spring MVC早期版本中,Controller通常通过实现Spring的`Controller`接口或者继承`SimpleFormController`、`AbstractCommandController`等基类来创建。然而,随着框架的发展,注解驱动的编程方式逐渐成为主流,如`...

    在一个form表单里同时上传多个文件和文本信息的解决方案

    为了提高用户体验和简化操作流程,通常希望这些文件和文本信息能够在同一个表单中完成上传。本方案通过示例代码详细介绍了如何在Java Web项目中实现这一功能。 ### 二、技术选型与环境搭建 #### 技术栈 - **服务器...

    开源框架 Spring Gossip

    PropertiesMethodNameResolver ParameterizableViewController AbstractCommandController AbstractFormController SimpleFormController AbstractWizardFormController ...

    Spring-Validator-开源

    这使得整个验证流程保持一致性和友好性。 6. **性能优化**:通过客户端验证,Spring-Validator减少了不必要的服务器交互,提高了系统的响应速度,同时提升了用户体验,因为用户可以实时看到输入错误,无需等待...

    java学习文档

    - **改进目的**:优化异常处理流程,提供统一的异常处理机制。 - **单元测试支持** - **改进目的**:增强对单元测试的支持,提高测试效率。 - **EL表达式支持** - **改进目的**:支持EL表达式的使用,提高页面...

    Spring培训资料

    通过简单的“Hello World”示例,让开发者快速了解PAFA的基本用法和流程。 #### 三、PAFA应用的整体结构 **3.1 开发目录布局** PAFA应用通常包含以下目录结构: - `src/main/java`:存放Java源代码。 - `src/main...

Global site tag (gtag.js) - Google Analytics