`

SimpleFormController简单表单控制器的处理流程

 
阅读更多
1.当表单控制器接收到GET请求时,它调用formBackingObject()方法,创建表单对象。该方法可以被子类覆盖,对于编辑操作的表单来说,你可以通过该方法从数据库中加载表单对象,当表单页面显示时,表单显示出待编辑的数据了;

2.表单对象和页面表单数据之间需要通过属性编辑器实现双向转化,对于非基本数据类型或String类型的属性来说,你可能需要注册一些自定义编辑器。你可以通过覆盖initBinder()方法,通过调用binder.registerCustomEditor()的方法注册编辑器;

3.表单对象通过bindOnNewForm属性(可以通过配置设置,默认为false)判断是否需要将GET请求参数绑定到formBackingObject()方法创建的表单对象中。如果bindOnNewForm为true,执行绑定操作,在绑定完成后,还将调用onBindOnNewForm()回调方法(子类可以提供具体实现)。否则到下一步。不过一般情况下,GET请求参数是用于加载等编辑表单对象的ID值,如topicId、forumId等,一般无需进行绑定;

4.调用referenceData()方法(子类可提供具体实现)准备一些关联的数据,如性别下拉框数据,学历下拉框数据等。一般采用ModelMap创建视图业务中需要用到的请求属性数据,键为属性名,值为属性值,如ModelMap("param1", "paramValue1");

5.使用控制器formView定义的视图渲染表单对象;

6.用户填写或更改表单后,提交表单,向表单控制器发起一个POST请求;

7.接收到POST请求时,表单控制器知道这是一个表单数据提交的操作,所以启动表单提交处理流程;

8.首先通过sessionForm属性判断表单控制器是否启用了Session。如果启用了Session,直接从Session中取出原表单对象,否则再次调用formBackingObject()方法构造出一个表单对象。sessionForm默认为false,可以通过配置进行调整,启用Session可能提高运行性能,但会占用一定的内存;

9.将POST请求参数填充到表单对象中;

10.调用onBind()方法,该方法允许你在表单填充完成后,合法性校验之前执行一些特定的操作;

11.如果validateOnBinding属性设置为true,注册在控制器中的校验器开始工作,对表单对象的属性值执行合法性校验。如果有合法性错误,将被注册到Errors对象中(关于如何注册校验器,我们将稍后介绍);

12.调用onBindAndValidate()方法,该方法允许你在数据绑定及合法性校验后,执行一些额外的自定义操作,你也可以在这里,执行一些额外的合法性校验;

13.调用processFormSubmission()方法处理提交任务,该方法内部又包含后续几步工作;

14.判断方法入参传入errors是否包含错误,如果包含错误返回到formView对应的表单页面中,否则到下一步;

15.通过isFormChangeRequest()方法(默认为false)判断请求是否为表单更改请求,如果为true,调用onFormChange()方法,然后返回到formView对应的表单页面,否则到下一步;

16.如果子类覆盖了onSubmit()方法,执行之,否则执行子类的doSubmitAction()方法。通过这两者之一完成业务的处理,然后返回successView属性指定的成功页面。

转自:http://blog.csdn.net/li_jinjian2005/article/details/2831171
分享到:
评论

相关推荐

    Spring MVC控制器之SimpleFormController使用

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

    一个最简单的SimpleFormController使用

    在Spring MVC框架中,`SimpleFormController`是一个基础的控制器类,它简化了处理表单提交和模型数据绑定的过程。这个控制器是Spring MVC早期版本中的一个组件,现在已经被`@Controller`注解的类所取代,尽管如此,...

    Spring的各种控制器

    MutiActionControl(多动作控制器)的概念在Spring MVC中指的是一个控制器可以有多个处理方法,每个方法对应一个特定的请求URL。这种方式增强了代码的组织性和可维护性,避免了单一方法处理所有请求的复杂性。例如:...

    springMVC3学习(六)--SimpleFormController(源码)

    springMVC3学习(六)--SimpleFormController(源码) 文章地址:http://blog.csdn.net/itmyhome1990/article/details/25988733

    详解springMVC—三种控制器controller

    这种控制器的优点是可以处理复杂的表单数据,并且有简单的验证功能。但是,它也需要编写 Controller 代码。 Spring MVC 提供了三种类型的控制器,每种控制器都有其特点和应用场景。开发者可以根据实际情况选择合适...

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

    控制器类(FileUploadController.java) ```java import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.web.bind.ServletRequestDataBinder; ...

    springmvc简单登陆例子

    `SimpleFormController`是Spring MVC早期版本中用于处理表单提交的基础控制器。在`onSubmit`方法中,我们获取到用户提交的数据(`User`对象),并将其放入模型(`ModelAndView`)中以便于视图渲染。`...

    Spring MVC 例子

    首先,`SimpleFormController`是Spring MVC早期版本中提供的一个抽象控制器,主要用于处理表单提交。它内置了对HTTP请求方法(GET和POST)的处理,简化了表单验证和模型数据的绑定过程。`SimpleFormController`通常...

    Spring mvc(从入门到精通)

    控制器可以继承 AbstractFormController 或 AbstractWizardFormController,以便处理用户输入表单。例如,LoginBankController 是一个继承自 SimpleFormController 的控制器,它负责处理用户登录请求。 视图 在 ...

    Spring Web MVC framework中英文对照.pdf

    - 控制器处理完请求后返回ModelAndView对象; - `DispatcherServlet`再通过ViewResolver解析视图名称,获得具体的视图对象; - 最后,`DispatcherServlet`将模型数据填充到视图中并渲染页面,返回给客户端。 ###...

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

    - Spring MVC提供多种类型的控制器,如AbstractController、AbstractCommandController、MultiActionController、SimpleFormController等,帮助开发者处理不同复杂度的控制逻辑。 - 与Struts相比,Spring MVC允许...

    SPRING WEB-FLOW入门教程

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

    Spring Tutorial.pdf

    - 基于注解的控制器处理表单。 - **表单标签**:学习如何使用Spring提供的表单标签库来创建动态表单。 - **表单验证**:Spring提供了强大的表单验证功能,包括基于注解的验证机制。 #### 五、Spring拦截器 - **...

    spring mvc

    在类级别上,它定义了控制器处理的请求的基本路径,如 `@RequestMapping("/forum.do")`。在方法级别上,它进一步细化了处理的具体请求,例如 `@RequestMapping` 与 `RequestMethod.GET` 结合表示处理 GET 方法的请求...

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

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

    Spring-WebFlow入门中文文档

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

    spring的使用方法

    如果你的控制器不需要处理表单数据,可以选择不使用表单控制器,这是Spring MVC与Struts的一个显著区别。 Spring MVC遵循“开闭原则”,即对扩展开放,对修改关闭。框架的核心类的某些方法被声明为final,不允许...

    spring 2.0表单绑定实例

    自己写的spring表单绑定的小例子,分别使用SimpleFormController,MultiActionController,spring的form tag和validator。 还在MultiActionController里面实现了表单的绑定

    SPRING信息

    3. `SimpleFormController`是Spring MVC早期版本中的一个控制器类,它简化了处理表单提交的过程。以下是一些关键方法的解释: - `formBackingObject()`:创建并返回用于填充表单的初始模型对象。 - `initBinder()`...

    毕设 外文文献翻译-Spring的web MVC构架模式 (3).docx

    为了适应复杂的应用场景,Spring提供了多种抽象控制器,如AbstractController、AbstractCommandController、MultiActionController、SimpleFormController和AbstractWizardFormController,允许开发者按需选择。...

Global site tag (gtag.js) - Google Analytics