CancellableFormController(取消表单控制器)

JAVA herman 875浏览 0评论
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog,发送下载链接帮助你免费下载!
本博客日IP超过1800,PV 2600 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog,之前的微信号好友位已满,备注:返现
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领

CancellableFormController(取消表单控制器)继承SimpleFormController,额外提供取消表单功能。

  • 表单展示:和SimpleFormController一样;
  • 表单取消:和SimpleFormController一样;
  • 表单成功提交:取消功能处理方法为:onCancel(Object command),而且默认返回cancelView属性指定的逻辑视图名。

那如何判断是取消呢?如果请求中有参数名为“_cancel”的参数,则表示表单取消。也可以通过cancelParamKey来修改参数名(如“_cancel.x”等)。

CancellableFormController 处理流程

下面开始控制器部分代码。

复制RegisterSimpleFormController一份命名为CanCancelRegisterSimpleFormController,添加取消功能处理方法实现:

@Override  
protected ModelAndView onCancel(Object command) throws Exception {  
    UserModel user = (UserModel) command;  
    //TODO 调用业务对象处理  
    System.out.println(user);  
    return super.onCancel(command);  
} 
  • onCancel:在该功能方法内实现取消逻辑,父类的onCancel方法默认返回cancelView属性指定的逻辑视图名。

spring配置文件代码:

<bean name="/canCancelForm"   
class="com.xttblog.chapter4.web.controller.CanCancelRegisterSimpleFormController">  
        <property name="formView" value="register"/>  
        <property name="successView" value="redirect:/success"/>  
        <property name="cancelView" value="redirect:/cancel"/>  
</bean>  
<bean name="/cancel" class="com.xttblog.chapter4.web.controller.CancelController"/>
  • cancelParamKey:用于判断是否是取消的请求参数名,默认是_cancel,即如果请求参数数据中含有名字_cancel则表示是取消,将调用onCancel功能处理方法;
  • cancelView:表示取消时时显示的页面;“redirect:/cancel”表示成功处理后重定向到/cancel控制器;防止表单重复提交;“/cancel” bean的作用是显示取消页面,此处就不列举了(详见代码)。

视图页面(修改register.jsp)代码:

<input type="submit" name="_cancel" value="取消"/> 

该提交按钮的作用是取消,因为name="_cancel",即请求后会有一个名字为_cancel的参数,因此会执行onCancel功能处理方法。

测试步骤:在浏览器输入“http://localhost:9080/springmvc-chapter4/canCancelForm”,则首先到展示视图页面,点击“取消按钮”将重定向到“http://localhost:9080/springmvc-chapter4/cancel”,说明取消成功了。

实际项目可能会出现比如一些网站的完善个人资料都是多个页面(即多步),那应该怎么实现呢?接下来让我们看一下spring Web MVC提供的对多步表单的支持类AbstractWizardFormController。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加QQ1群:135430763(2000人群已满),QQ2群:454796847(已满),QQ3群:187424846(已满)。QQ群进群密码:xttblog,想加微信群的朋友,之前的微信号好友已满,请加博主新的微信号:xttblog,备注:“xttblog”,添加博主微信拉你进群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作可添加助理微信进行沟通!

本文原文出处:业余草: » CancellableFormController(取消表单控制器)