4

"redirect:/new/url"在 Spring 3 中返回时有没有办法指定 HTTP 状态码?

4

2 回答 2

1

没有尝试过,但是查看它的来源org.springframework.web.servlet.view.RedirectViewgetHttp11StatusCode()确定响应的HTTP状态的方法。

您似乎可以org.springframework.web.servlet.View#RESPONSE_STATUS_ATTRIBUTE根据请求通过设置属性覆盖默认响应代码。简单设置:

httpServletRequest.setAttribute(View.RESPONSE_STATUS_ATTRIBUTE, status)

在返回“ redirect:”视图之前。

于 2011-09-09T11:07:34.357 回答
0

正如Scolytus所指出的,您必须返回 aRedirectViewstatusCode集合。使用"redirect:"前缀将始终导致HttpStatus.MOVED_TERMPORARILY(302) 状态。

String如果您还需要从控制器方法返回的能力RedirectView,则必须将方法签名更改为 return Object。例子:

@RequestMapping
public Object someMethod() {
    if (doRedirect) {
        RedirectView rv = new RedirectView("/new/url");
        rv.setStatusCode(HttpStatus.MOVED_PERMANENTLY); // set our own status code
        return rv;
    } else {
        return "someView";
    }
}
于 2016-06-17T23:06:22.823 回答