我需要输入此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>
有人能解释我的代码有什么问题吗?
答案 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应用程序 这些情景的控制导航有一个共同点 一个或多个以下特征:
- 有一个明确的开始和结束点。
- 用户必须按特定顺序浏览一组屏幕。
- 直到最后一步才更新。
- 一旦完成,就不可能意外重复交易