gpt4 book ai didi

java - 设置 throwExceptionIfNoHandlerFound 在 Spring 4.2 中无效。*

转载 作者:行者123 更新时间:2023-11-30 10:50:48 26 4
gpt4 key购买 nike

设置 throwExceptionIfNoHandlerFound 在 Spring 4.2.2 中无效。这对我很重要,因为我必须以 JSON 格式发送所有响应。

我在我的 AppInitializer 中设置 throwExceptionIfNoHandlerFound:

public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

[...]

@Override
protected void customizeRegistration(Dynamic registration) {
boolean done = registration.setInitParameter("throwExceptionIfNoHandlerFound", "true"); // -> true
if(!done) throw new RuntimeException();
}
}

它似乎有效,因为 DispatcherServlet#noHandlerFound像预期的那样抛出异常:

// https://github.com/spring-projects/spring-framework/blob/4.2.x/spring-webmvc/src/main/java/org/springframework/web/servlet/DispatcherServlet.java#L1013
protected void noHandlerFound(HttpServletRequest request, HttpServletResponse response) throws Exception {
if (pageNotFoundLogger.isWarnEnabled()) {
pageNotFoundLogger.warn("No mapping found for HTTP request with URI [" + getRequestUri(request) +
"] in DispatcherServlet with name '" + getServletName() + "'");
}
if (this.throwExceptionIfNoHandlerFound) {
throw new NoHandlerFoundException(request.getMethod(), getRequestUri(request),
new ServletServerHttpRequest(request).getHeaders());
}
else {
response.sendError(HttpServletResponse.SC_NOT_FOUND);
}
}

但是然后(这非常令人困惑!)每个异常 get catchedresolved to an error view .所以不可能通过使用 Spring-@ExceptionHandler

来处理 NoHandlerFoundException

问题:

我敢肯定,这是非常好的和有用的功能,但是是否有任何方法可以检测 404 错误以发送自定义响应而不是默认的 html 错误页面?

最佳答案

当我们重写以使用默认的 servlet 处理时,它似乎会发生。 Answered here

关于java - 设置 throwExceptionIfNoHandlerFound 在 Spring 4.2 中无效。*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34935785/

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