[轉]spring mvc註解方式實現嚮導式跳轉頁面

Franson發表於2016-09-29

由於專案需要用到嚮導式的跳轉頁面效果,本專案又是用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">

相關文章