是否可以在签名中没有RedirectAttributes的方法中访问RedirectAttributes?例如,当重写方法如下所示:
@Override
public void onAuthenticationSuccess(final HttpServletRequest req, final HttpServletResponse res,
final Authentication auth) throws IOException, ServletException {
// add something to RedirectAttributes here
// redirectAttributes.addFlashAttribute("attr", "value");
super.onAuthenticationSuccess(req, res, auth);
}
我使用的是弹簧3.2.2.RELEASE。
答案 0 :(得分:1)
正如您在DispatcherServlet类实现中所看到的,有常量:
public static final String FLASH_MAP_MANAGER_BEAN_NAME = "flashMapManager";
public static final String OUTPUT_FLASH_MAP_ATTRIBUTE = DispatcherServlet.class.getName() + ".OUTPUT_FLASH_MAP";
public static final String FLASH_MAP_MANAGER_ATTRIBUTE = DispatcherServlet.class.getName() + ".FLASH_MAP_MANAGER";
Spring有一个名为RequestContextUtils的类,它有方法:
public static Map<String, ?> getInputFlashMap(HttpServletRequest request)
public static FlashMap getOutputFlashMap(HttpServletRequest request)
public static FlashMapManager getFlashMapManager(HttpServletRequest request)
前两种方法可以分别访问输入和输出闪存映射。 最后一个方法返回FlashMapManager,它有许多方便的方法来处理flash属性。有关详细信息,请参阅此接口的实现,特别是AbstractFlashMapManager。
答案 1 :(得分:0)
如果您的目标是&#34;添加客户第一次登陆主页的指示,&#34;然后HttpSession可以做到这一点:
#include <iostream>
using namespace std;
class bank
{
public:
bank();
void output(ostream& out)
{
out<<account;
}
int revised(int acc)
{
acc=acc+acc*2;
}
void set_account(int a)
{
account = a;
}
int get_account()
{
return account;
}
private:
int account;
};
int main()
{
bank obj1;
int i;
cout << "Enter your money";
cin>>i;
obj1.set_account(i);
obj1.output(cout);
return 0;
}
这对我有用。这背后的逻辑是登录是在整个会话的上下文中,可能包含多个请求。