java - Spring @RestController 响应已提交

标签 java spring spring-restcontroller spring-rest

我有以下代码

@RestController
public class TokenRefreshController {
    @Autowired
    TokenAuthenticationService tokenAuthenticationService;

    @ApiOperation(value = "Generate new authentication token using a refresh token")
    @RequestMapping(value = "/token/refresh",
            method = RequestMethod.POST)
    public void refreshToken(@RequestParam("refresh") String refreshToken, HttpServletResponse response) throws IOException {
        System.out.println("WHEN REFRESHING TOKEN THE RESPONSE IS COMMITTED :" + response.isCommitted());
        tokenAuthenticationService.refreshAuthToken(refreshToken,response);
    }
}

在我打印到控制台的行上,它始终是正确的。因此,在进入我的 Controller 之前,响应就已经提交了。我怎样才能获得未提交的响应,因为我正在刷新AuthToken方法中设置一些 header 并在需要时返回错误。

正如下面的评论中提到的,其中一个过滤器可能正在提交响应,但我仍然不知道如何阻止过滤器这样做。

最佳答案

您可以尝试以下方法,但这适用于 Spring Boot 版本。

您应该使用 ResponseEntity 对象返回您的数据并使用 createYourObject 关键字,该关键字将包含您将设置的对象。

@RestController
public class TokenRefreshController {
    @Autowired
    TokenAuthenticationService tokenAuthenticationService;

    @ApiOperation(value = "Generate new authentication token using a refresh token")
    @RequestMapping(value = "/token/refresh",
            method = RequestMethod.POST)
    public ResponseEntity<createYourObject> refreshToken(@RequestParam("refresh") String refreshToken, HttpServletResponse response) throws IOException {
        System.out.println("WHEN REFRESHING TOKEN THE RESPONSE IS COMMITTED :" + response.isCommitted());
        tokenAuthenticationService.refreshAuthToken(refreshToken,response);
        return new ResponseEntity<createYourObject>(yourObjectResponse,HttpStatus.CREATED);
    }
}

关于java - Spring @RestController 响应已提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53277370/

相关文章:

java - 有人可以帮我理解以下与hibernate中的继承策略相关的逻辑吗?

java - 如何使用 Mockito 在另一个 Mock 类中模拟 Spring 消息资源?

java - @ControllerAdvice 和 @ExceptionHandler 没有被我的 RestController 触发

Java函数式接口(interface)自动将第一个参数分配为类?

java - 将 XML 节点值转换为日期

java - 在 Java 中导出 XML 提取中的特定字段

java - 如何使用阅读器从文件系统读取文本文件(.txt)并将每个文件的文本传递给处理器Spring Batch?

java - @RequestMapping 注解中路径和值属性的区别

spring - 使用 siteminder 保护 spring mvc REST api

java - 如何对自定义实体集合进行排序?