gpt4 book ai didi

java - Spring controller 更新 Spring 版本到 4.2.3 后返回 500 服务器错误

转载 作者:搜寻专家 更新时间:2023-11-01 03:35:09 26 4
gpt4 key购买 nike

我在我的应用程序中使用 Spring 4.1.8.RELEASE 版本没有任何问题。我使用作为 REST 资源的 Spring Controller 进行了基本设置,并定义了以下资源:

@RequestMapping(
value = "/emailvalidation",
method = RequestMethod.POST)
public ResponseEntity userEmailValidation(
@Valid @RequestBody UserEmailValidationRequest request, BindingResult bindingResult) {
validator.validate(ErrorCode.class, bindingResult);

backendClient().validateUserEmail(request);

return new ResponseEntity(HttpStatus.NO_CONTENT);
}

这是一个正常工作的资源,如果验证通过,它会返回一个成功的响应,HTTP 状态为 201。

问题是,将版本更新到 4.2.3.RELEASE 后,资源总是返回 HTTP 状态 500。

有没有一种新方法可以处理我确实想执行 POST 但没有响应数据的此类资源?我找不到关于此的任何更新,也找不到任何问题。

最佳答案

问题是存在一个运行时异常导致该方法返回 500 状态。

我有一个 LoggingFilter,它扩展了 org.springframework.web.filter.OncePerRequestFilter。在此过滤器中,我有一个方法试图获取响应输出流(请参阅下面的用法)

byte[] responseData = response.getOutputBuffer();
String payload = new String(responseData).replace("\n", "");
message.append(";payload=").append(payload);

在 4.2 之前的版本中,response.getOutputBuffer() 在没有响应数据时返回 byte[0],所以一切正常。从版本 4.2.* 开始,这已更改为返回 null,以防没有响应数据。这会导致 NullPointerException,从而产生 500 服务器错误

关于java - Spring controller 更新 Spring 版本到 4.2.3 后返回 500 服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34315867/

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