我不知道是否可以使用 jstl。但是你可以使用闪光范围。根据您的要求,该属性仍将存在下一个 jsp。
使用这个简单的代码来实现闪存范围。
例如,要将消息添加到 flash 范围,只需使用常规语法添加请求范围属性并让 fiter 处理:
request.setAttribute("flash.message", "Here is the news...");
然后可以使用 EL 或 scriptlet 语法在重定向目标 JSP 中访问上述属性(省略“flash.”前缀):
${message}
or
<%= request.getAttribute("message") %>
这是过滤器的代码:
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
/**
* Ensures that any request parameters whose names start
* with 'flash.' are available for the next request too.
*/
public class FlashScopeFilter implements Filter {
private static final String FLASH_SESSION_KEY = "FLASH_SESSION_KEY";
@SuppressWarnings("unchecked")
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//reinstate any flash scoped params from the users session
//and clear the session
if (request instanceof HttpServletRequest) {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpSession session = httpRequest.getSession(false);
if (session != null) {
Map<String, Object> flashParams = (Map<String, Object>)
session.getAttribute(FLASH_SESSION_KEY);
if (flashParams != null) {
for (Map.Entry<String, Object> flashEntry : flashParams.entrySet()) {
request.setAttribute(flashEntry.getKey(), flashEntry.getValue());
}
session.removeAttribute(FLASH_SESSION_KEY);
}
}
}
//process the chain
chain.doFilter(request, response);
//store any flash scoped params in the user's session for the
//next request
if (request instanceof HttpServletRequest) {
HttpServletRequest httpRequest = (HttpServletRequest) request;
Map<String, Object> flashParams = new HashMap();
Enumeration e = httpRequest.getAttributeNames();
while (e.hasMoreElements()) {
String paramName = (String) e.nextElement();
if (paramName.startsWith("flash.")) {
Object value = request.getAttribute(paramName);
paramName = paramName.substring(6, paramName.length());
flashParams.put(paramName, value);
}
}
if (flashParams.size() > 0) {
HttpSession session = httpRequest.getSession(false);
session.setAttribute(FLASH_SESSION_KEY, flashParams);
}
}
}
public void init(FilterConfig filterConfig) throws ServletException {
//no-op
}
public void destroy() {
//no-op
}
}
http://smartkey.co.uk/development/implementing-flash-scope-in-java-web-applications/