gpt4 book ai didi

java - 如何处理 Spring MVC 中的 400 错误

转载 作者:行者123 更新时间:2023-12-02 03:38:41 27 4
gpt4 key购买 nike

当我传递无效的 json 格式时,我收到 400 Http 响应,
我想返回自定义 json 消息而不是这个,有人可以建议在 Spring 4.1 中该怎么做吗?

使用ControllerAdvice处理异常,但它不起作用。

@ControllerAdvice
public class GlobalControllerExceptionHandler {

@ExceptionHandler({org.springframework.http.converter.HttpMessageNotReadableException.class})
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ResponseBody
public String resolveException() {
return "error";
}

}

spring-config.xml 下面给出

<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1" />
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
</map>
</property>
<property name="defaultViews">
<list>
<!-- Renders JSON View -->
<bean
class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
</list>
</property>
</bean>

下面给出了来自 WebSphere 应用程序服务器 (7.0) 的 Json 请求和响应。

Request 1: Empty json request : {}
Response Status Code: 400 Bad Request
Response Message : Json request contains invalid data:null


Request 2:Invalid format of Json Request : {"data":,"name":"java"}
Response Status Code: 400 Bad Request
Response or Exception message :

nested exception is com.fasterxml.jackson.databind.JsonMappingException: Unexpected character (',' (code 44)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
at [Source: com.ibm.ws.webcontainer.srt.http.HttpInputStream@8f308f3; line: 5, column: 57]

类似问题如下链接 Using Spring MVC, accepting POST requests with bad JSON leads to a default 400 error code server page being returned

最佳答案

您可以尝试以这种方式映射异常。此代码将返回 400 状态,但您可以按照与您发布的链接相同的方式更改返回

@ExceptionHandler
@ResponseStatus(HttpStatus.BAD_REQUEST)
public void handleJsonMappingException(JsonMappingException ex) {}

关于java - 如何处理 Spring MVC 中的 400 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37137773/

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