gpt4 book ai didi

java - 在拦截器重定向请求中重新注入(inject) postdata

转载 作者:行者123 更新时间:2023-11-30 05:00:23 25 4
gpt4 key购买 nike

事情是这样的,

为了模仿grails对一个表单进行多次提交的方式,我实现了这个拦截器,这样当它遇到如下网址时:
/whatever-url/${controllerName}/index 它重定向到/whatever-url/${controllerName}/${submitName}

我有两个问题,首先它是用 get 方法重定向的,其次我没有保留 jsp 中原始表单的 postData,有人知道如何在重定向请求中将其设置回来吗?
这是拦截器类:



 public class ControllerIndexInterceptor extends HandlerInterceptorAdapter {

私有(private)静态字符串[]重定向= {“编辑”,“删除”};

/**
* {@inheritDoc}
*/
@覆盖
公共(public) boolean preHandle(HttpServletRequest请求,
HttpServletResponse 响应,对象处理程序)抛出异常 {
字符串参数 = null;
for (字符串重定向:重定向) {
if((param = request.getParameter(redirect)) != null){
响应.sendRedirect(请求.getContextPath()+请求.getServletPath()+
TransformURI(request.getPathInfo(), 重定向, 处理程序));
返回假;
}
}
返回真;

}

答案:



 public class ControllerIndexInterceptor extends HandlerInterceptorAdapter {

私有(private)静态字符串[]重定向= {“编辑”,“删除”};

/**
* {@inheritDoc}
*/
@覆盖
公共(public) boolean preHandle(HttpServletRequest请求,
HttpServletResponse 响应,对象处理程序)抛出异常 {
字符串参数 = null;
for (字符串重定向:重定向) {
if((param = request.getParameter(redirect)) != null){
request.getRequestDispatcher(request.getServletPath()+
TransformURI(request.getPathInfo(), 重定向, handler)).forward(request,response);
返回假;
}
}
返回真;

}

最佳答案

IMO response.sendRedirect() 将向浏览器发送重定向状态代码,最终将发出新请求,这就是您收到 GET 请求的原因。这也是无法获取 POST 数据的原因(因为它完全是一个新的且不同的请求)。请改用 request.getRequestDispatcher() 。

关于java - 在拦截器重定向请求中重新注入(inject) postdata,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6939402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com