Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux集群 > Architecture > » 正文

SimpleFormController的处理流程

来源: 未知 分享至:

 


SimpleFormController是AbstractFormController的具体实现,允许你在配置文件里通过successView和formView属性来配置成功视图(表单成功提交后要转向的页面)和表单视图(显示表单的页面);如果提交不合法(有三种可能:1.validator出错。2.bind错误,也就是说从请求中提取参数封装到command的过程中出现了类型转化错误,比如将一个含字母字符串转换为Integer。3.onBindAndValidate()方法出错),则会重新返回到表单视图;如果提交合法,onSubmit()方法的默认实现会转向成功页面,当然你可以覆写该方法在转向之前填充一些你想返回的信息。
 

    SimpleFormController的工作流与AbstractFormController差不多,唯一的不同是你不必自己去实现showForm()和processFormSubmission()。showForm()这个方法已经被类SimpleFormController实现了并被限定为final,你不可以在继承SimpleFormController的子类里覆写这个类。processFormSubmission()这个方法尽管可以去覆写但由于它几乎可以满足所有的要求,因此一般也不会有人去重写它。


它的处理流程是这样的:   
get请求来到时,这样处理:   
1) 请求传递给一个controller对象   
2) 调用formBackingObject()方法,创建一个command对象的实例。  
3) 调用initBinder(),注册需要的类型转换器   
4) 调用showForm()方法,返回准备呈现给用户的视图 ,如果“bindOnNewForm”属性设为true,则ServletRequestDataBinder会将初始请求参数填入一个新的表单对象,并且执行onBindOnNewForm()方法。
5) 调用referenceData()方法,准备给用户显示相关的数据。如用户登录需要选择的年度信息  
6) 返回formView指定的视图

 对应的活动图如下:

 SimpleFormController的处理流程

post请求来到时,这样处理:   
1) 如果sessionForm属性没有设定,则调用formBackingObject()方法,创建一个command对象的实例。否则从session中取得表单对象  
2) 将请求传来的参数写入command对象,看它的源代码,会发现它是这样来做的:

ServletRequestDataBinder binder = createBinder(request, command);
binder.bind(request);

3)执行onBind()方法,在绑定数据之后,验证数据之前对表单数据进行一些自制的修改动作。   
4) 如果设置为要求验证(validateOnBinding属性被设定),则调用validator类进行数据验证  
5) 调用onBindAndValidate()方法,该方法允许自定义数据绑定和校验处理  
6)执行processFormSubmission()检验 Errors对象中含不含错误,如果含有错误则执行showForm()返回到填写表单页面;否则执行onSubmit()方法,进行提交表单,然后转向成功页面。  
相应的活动图如下:

图片有些看不清的问题:点击图片,让图片在一个单独的页面内显示


Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史