1. 程式人生 > >springmvc重定向後jsp如何獲取其中的flashAttribute?

springmvc重定向後jsp如何獲取其中的flashAttribute?

大家都知道我們在springmvc3.1以後可以利用RedirectAttributes在action重定向後來進行資料傳遞,來解決困擾大家許久的action之間跳轉資料丟失的問題。

那麼我們如何在action重定向到jsp頁面後通過EL表示式獲取其中的引數呢?

當然你也可以使用attribute來進行頁面資料的傳遞但是會拼接到url中,直接顯示給使用者,會有一定的安全問題。

測試程式碼:


TestController.java

 @RequestMapping(value = "/test", method = {RequestMethod.GET})
    public String ajaxSubmit(HttpServletRequest request, HttpServletResponse response,
        final RedirectAttributes directAttributes)
    {
        // FlashAttribute頁面重定向後資料儲存在FlashMap中
        directAttributes.addFlashAttribute("test", "0001");
        
        // Attribute頁面重定向後資料拼接到url後
        directAttributes.addAttribute("test1", "0002");
        return "redirect:/index.jsp";
    }


index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%
    String path = request.getContextPath();
    String basePath =
        request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<body>
	<a href="account/test">TEST</a>
	<br> test: ${sessionScope['org.springframework.web.servlet.support.SessionFlashMapManager.FLASH_MAPS'][0]['test']}
	<br> test1: ${param.test1}
</body>
</html>
解釋:

一開始我們使用attribute進行資料傳遞,但是會拼接到url所以想到使用flash attribute 但是不知道如何獲取在頁面中,最後debug

才知道如何獲取其中的值

取值EL表示式:

 ${sessionScope['org.springframework.web.servlet.support.SessionFlashMapManager.FLASH_MAPS'][0]['test']}

ok,結束