SpringMVC的攔截器與Controller裏return "redirect:XXX"的問題

本身在網上也找到遇到一樣問題的兩篇文章: java

http://q.cnblogs.com/q/62314/ web

http://stackoverflow.com/questions/9786028/spring-mvc-interceptor-addobject/9786096#9786096 spring

下面分享一下我的對這個問題的解決辦法,同時也請有更好解決方法的高手不吝指教! 數據庫

首先是controller層:(這是點擊頁面「註冊」按鈕,表單提交的action) spring-mvc

// 保存到數據庫
	@RequestMapping(value = "doRegister", method = RequestMethod.POST)
	public RedirectView createUser(@ModelAttribute("user") User user, RedirectAttributes redirectAttributes,
			HttpServletResponse response) {

		// 模擬數據庫保存
		System.out.println(user.getUsername() + "   is saved!");
		redirectAttributes.addAttribute("username", user.getUsername());
		return new RedirectView("{username}");
	}


    // 註冊成功後展示用戶主頁
    @RequestMapping(value = "{username}", method = RequestMethod.GET)
    public String showUserHome(@PathVariable String username, Model model, HttpServletRequest request) {
             model.addAttribute(username);
        return request.getAttribute(Keys.SKIN_DIR_NAME) + "home";
    }
其次是攔截器:(加入一些全局配置,如基本的站點信息)
@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object arg2,
			ModelAndView modelAndView) throws Exception {

		final Map<String, Object> model = modelAndView.getModel();

		if (!(modelAndView.getView() instanceof RedirectView)) {
			model.put("param1", "value1");
			model.put("param2", "value2");
			model.put("param3", "value3");
		} else {
			//進行其它操做
		}

	}
關鍵點是org.springframework.web.servlet.view.RedirectView。
相關文章
相關標籤/搜索