如何构建级联控制器?

时间:2014-02-07 21:12:03

标签: java spring-mvc url-redirection

我需要输入此http://localhost:8080/first之类的网址,然后我的控制器必须转到http://localhost:8080/second,依此类推,直到我来http://localhost:8080/end。它像递归一样。在结束时,我需要列出一个列表。

@Controller
@RequestMapping(value = "/", method = RequestMethod.GET)
public class CascadeController {    
    @RequestMapping("/first")
    String first(ModelMap model) {
        model.put("list", new ArrayList<String>());
        return "/second";
    }

    @RequestMapping("/second")
    String second(ModelMap model) {
        ((List) model.get("list")).add("A");
        return "/third";
    }

    @RequestMapping("/third")
    String third(ModelMap model) {
        ((List) model.get("list")).add("B");
        return "end";
    }
}

end.jsp

<%@ page import="java.util.List" %>
<html>
<body>
   <%for(String s : (List<String>) request.getAttribute("list")){%>
      <%=s%>
   <%}%>
</body>
</html>

有人能解释我的代码有什么问题吗?

2 个答案:

答案 0 :(得分:0)

用户是否需要查看/ first / / page页面上的数据? 如果没有,尝试改变怎么样:

return "/second";return "redirect:/second";

return "/third";return "redirect:/third";

如果用户需要在/第一页或/第二页上查看X时间的数据,那么如何从javascript进行重定向?

<强>编辑: 如何关于Flash属性,请参阅此帖子:reading flash attributes

  @RequestMapping("/first")
    String first(ModelMap model, final RedirectAttributes redirectAttributes) {
        model.put("list", new ArrayList<String>());
        redirectAttributes.addFlashAttribute("list", new ArrayList<String>());
        return "redirect:/second";
    }

    @RequestMapping("/second")
    String second(ModelMap model, final RedirectAttributes redirectAttributes) {
        List list = (List) model.get("list");
        list.add("A");
        redirectAttributes.addFlashAttribute("list", list);
        return "redirect:/third";
    }

    @RequestMapping("/third")
    String third(ModelMap model, final RedirectAttributes redirectAttributes) {
        List list = (List) model.get("list");
        list.add("B");
        redirectAttributes.addFlashAttribute("list", list);
        return "end";
    }

答案 1 :(得分:0)

我建议你看看Spring Webflow。从项目描述复制:

  

Spring Web Flow的最佳位置是有状态的Web应用程序   这些情景的控制导航有一个共同点   一个或多个以下特征:

     
      
  • 有一个明确的开始和结束点。
  •   
  • 用户必须按特定顺序浏览一组屏幕。
  •   
  • 直到最后一步才更新。
  •   
  • 一旦完成,就不可能意外重复交易
  •