我需要将一个用户名对象从过滤器传递给控制器。控制器适用于这两个参数,但参数不能过滤掉帖子。
过滤器中的方法:
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException e) throws IOException, ServletException {
/*send object to controller*/
Username username = value;
response.sendRedirect("/create-bank-profile");
}
在控制器中:
@RequestMapping(value = "/create-bank-profile", method = RequestMethod.POST)
public ModelAndView register(
HttpSession session,
HttpServletRequest request,
@RequestParam(required = false, value = "bank-info-check", defaultValue = "false") Boolean isBankCustomer,
@RequestParam("accessKey") Long accessKey,
@RequestParam("secretKey") Long secretKey
) {
/* access the username object's two fields: aceesskey and secretKey */
}
我想我必须把这个值提出来。
答案 0 :(得分:1)
您的create-bank-profile
是一种POST
方法,无法使用POST
发送response.sendRedirect()
请求。
您可以从这些选项中查看一些内容:
使用RequestDispatcher
request.setAttribute("param", "param value");
RequestDispatcher dispatcher = servletContext().getRequestDispatcher(required_url);
在请求中设置所需参数并使用:
response.setStatus(307);
response.addHeader("Location", "required URL");
答案 1 :(得分:1)
以下评论的代码不起作用。
//RequestDispatcher rd=request.getRequestDispatcher("./test1");
//rd.forward(request, response);
//chain.doFilter(request, response);
然后我尝试如下。它工作正常。请试试这个。它应该是有效的。
我使用servlets测试了下面的代码。我添加了“./test1”。
如果是您的情况,您不需要提及“./”,您只需说“必填网址”
request.setAttribute("anil", "anil123");
RequestDispatcher rd= ((HttpServletRequest)request).getRequestDispatcher("./test1");
rd.forward(request, response);
答案 2 :(得分:0)
request.getRequestDispatcher(" URL")。forward(request,response);