由于项目需要用到向导式的跳转页面效果,本项目又是用spring mvc实现的,刚开始想到用spring 的webflow,不过webflow太过笨重,对于我们不是很复杂的跳转来说好像有种“杀鸡焉用牛刀”的感觉,于是就网上搜索看有没有类似的解决方案,网上的答案一般都是叫你继承AbstractWizardFormContoller这个类来实现,但对于spring mvc3.0.x这个类将不再使用,转而推荐使用注解的方式来实现,于是参考官方文档,用注解方式实现了向导式页面。

下面是代码示例:

[java]@Controller 
@RequestMapping("/wizard.htm") 
//需要保存在session中的变量 
@SessionAttributes("bean") 
public class TestWizardController{ 
   
  @Resource(name = "beanService") 
  private BeanService beanService;   
   
  @RequestMapping 
  public String step1(final ModelMap modelMap){ 
    modelMap.addAttribute("bean", new Bean()); 
    return "step1"; 
  } 
   
  @RequestMapping(params = "_step=2") 
  public String step2(final @ModelAttribute("bean") Bean bean, 
                      final Errors errors){ 
    return "step2"; 
  } 
   
  @RequestMapping(params = "_step=3") 
  public String step3(final @ModelAttribute("bean") Bean bean, 
                      final Errors errors){ 
    return "step3"; 
  } 
   
  @RequestMapping(params = "_finish") 
  public String processFinish(@ModelAttribute("bean")Bean bean, 
                              final Errors errors, 
                              final ModelMap modelMap, 
                              final SessionStatus status){ 
 
    beanService.add(bean);    
    status.setComplete(); 
    return "success"; 
  } 
   
  @RequestMapping(params = "_cancel") 
  public String processCancel(final HttpServletRequest request, 
                              final HttpServletResponse response, 
                              final SessionStatus status){ 
     status.setComplete(); 
     return "cancel"; 
  } 
     
}

其中www.2cto.com起到最大作用的就是@SessionAttributes这个注解,它定义了一个在session范围内的变量,这个变量可以在不同的页面跳转时保持状态。

第一次访问http:/www./example.com/wizard.htm时进入step1方法,其后提交的表单action后面都要加上相应的参数,如:

step1页面 <form action="http:/www./example.com/wizard.htm?_step=2">

step2页面 <form action="http:/www./example.com/wizard.htm?_step=3">

step3页面 <form action="http:/www./example.com/wizard.htm?_finish">

[转]spring mvc注解方式实现向导式跳转页面的更多相关文章

  1. junit4测试 Spring MVC注解方式

    本人使用的为junit4进行测试 spring-servlet.xml中使用的为注解扫描的方式 <?xml version="1.0" encoding="UTF- ...

  2. Spring mvc注解方式使用事务回滚

    项目名:1ma1ma jdbc.xml <bean  id="dataSource" class="org.apache.commons.dbcp.BasicDat ...

  3. 【spring mvc】spring mvc POST方式接收单个字符串参数,不加注解,接收到的值为null,加上@RequestBody,接收到{"uid":"品牌分类大”},加上@RequestParam报错 ---- GET方式接收单个参数的方法

    spring mvc POST方式 接收单个参数,不加任何注解,参数名对应,接收到的值为null spring mvc POST方式 接收单个参数,加上@RequestBody,接收到参数格式:{&q ...

  4. spring mvc 注解@Controller @RequestMapping @Resource的详细例子

    现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过 ...

  5. Spring MVC注解的一些案列

    1.  spring MVC-annotation(注解)的配置文件ApplicationContext.xml <?xml version="1.0" encoding=& ...

  6. spring mvc(注解)上传文件的简单例子

    spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...

  7. spring mvc 注解入门示例

    web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=" ...

  8. spring mvc 注解示例

    springmvc.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...

  9. mybatis源码学习--spring+mybatis注解方式为什么mybatis的dao接口不需要实现类

    相信大家在刚开始学习mybatis注解方式,或者spring+mybatis注解方式的时候,一定会有一个疑问,为什么mybatis的dao接口只需要一个接口,不需要实现类,就可以正常使用,笔者最开始的 ...

随机推荐

  1. oracle记录各登陆主机用户名,登陆ip,所执行的命令

    oracle记录各登陆主机用户名,登陆ip,所执行的命令 /etc/profile #history USER_IP=`>/dev/null| awk '{print $NF}'|sed -e ...

  2. linux内核--进程地址空间(一)

    引言:现代操作系统提供了一种对内存的抽象概念,叫做虚拟存储器,它为每个进程提供了一个大的,一致的,和私有的地址空间.通过一个很清晰的机制,虚拟存储器提供了3个重要的能力: 1)它将主存看成是一个存储在 ...

  3. DSP TMS320C6000基础学习(1)——介绍

    主要内容 1. Why process signals digitally? (1)模拟电路由模拟组件构成:电阻.电容及电感等,这些组件随着电压.温度或机械结构的改变会动态影响到模拟电路的效果: (2 ...

  4. stage.width/height和stage.stageWidth/stageHeight的区别

    stage.stageWidth和stage.stageHeight就是舞台的宽带和高度 一般默认打开宽带是550,高度是400 那么stage.stageWidth=550,stage.stageH ...

  5. golang之interface

    一.概述 接口类型是对 "其他类型行为" 的抽象和概况:因为接口类型不会和特定的实现细节绑定在一起:很多面向对象都有类似接口概念,但Golang语言中interface的独特之处在 ...

  6. HTML——框架

    1.frameset <html> <frameset cols="25%,50%,25%"> <frame src="frame_a.ht ...

  7. 30个你不可不知的CSS选择器

    30个你不可不知的CSS选择器   一.五大基本选择符 1. *(通配符)*通配符选择器,经常用于css reset(样式重置),清理标签的默认样式,但现在一般不提倡直接使用*了,主要是*会匹配所有标 ...

  8. grep 和 perl多个条件匹配

    grep和perl多个条件匹配使用‘|’作为分割符号 grep -E 'abc|def' perl if(/abc|def/)

  9. baidu-fex 精彩文章

    7 天打造前端性能监控系统 http://fex.baidu.com/blog/2014/05/build-performance-monitor-in-7-days/ 前端自动化测试探索 http: ...

  10. webpack 多入口配置

    同事套搭建vue项目,个人推荐了VUE官网的vue-cil的方式,http://cn.vuejs.org/guide/application.html 顺着官网的操作,我们可以本地测试起我们的项目 n ...