gpt4 book ai didi

java - 设置在 Spring MVC 中不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:35:57 25 4
gpt4 key购买 nike

问题

我想向用户显示自定义错误页面。简单地说,<error-page>在 web.xml 上似乎不起作用。我可以猜出问题出在哪里,但我需要了解为什么它不起作用。


我的设置

我设置了<error-page>在我的 spring mvc 应用程序中的 web.xml 上。以下是设置。

<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
<url-pattern>*.*</url-pattern>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

<error-page>
<error-code>404</error-code>
<location>/error</location>
</error-page>

我的错误页面就在...

WEB-INF
└ views
└ Errorpages
└ ErrorPage.jsp

为了您的信息,我也尝试了以下这些方法,但这些方法都不起作用。

<error-page>
<error-code>404</error-code>
<location>/WEB-INF/views/Errorpages/ErrorPage.jsp</location>
</error-page>

<error-page>
<error-code>404</error-code>
<location>/views/Errorpages/ErrorPage.jsp</location>
</error-page>

<error-page>
<error-code>404</error-code>
<location>/Errorpages/ErrorPage.jsp</location>
</error-page>

<error-page>
<error-code>404</error-code>
<location>/ErrorPage.jsp</location>
</error-page>

<!-- Or tried those above without the .jsp that comes after ErrorPage -->
<!-- And also, tried those after moving the resources out of WEB-INF -->

第二次尝试

我查看了服务器日志并注意到 spring 试图通过重定向来查找资源,所以我改变了我的计划并尝试通过 Spring MVC 中的典型 View 返回来实现这个目标。 .

我做了这个 Action

@RequestMapping("/error")
public String throwsErrorPage(Locale locale, Model model) {
logger.info("Errorpage action..." + locale.getLanguage());
return "/Errorpages/ErrorPage";
}

我的预期部分正确,因为它成功调用了操作。我的服务器日志很清楚。

WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/notfound] in DispatcherServlet with name 'appServlet'
INFO : com.company.web.controller.HomeController - Errorpage action...ko

如您所见,我通过在 url 上键入 notfound 生成了 404 错误,它重定向到我在 <location> 上指定的 /error在 web.xml 中。但它不返回 View 。

为了确保操作返回 View ,我尝试更改操作的类型,例如...

@RequestMapping("/error")
public ModelAndView throwsErrorPage(Locale locale, ModelAndView mv) {
logger.info("Errorpage action..." + locale.getLanguage());
return mv.setViewName("/Errorpages/ErrorPage");
}

但是效果不是很好......


奇怪的事情

如果我通过 localhost:8080/error 调用操作它肯定会调用操作并返回预期的错误页面。嗯,重定向和通过在 url 或 ajax 上输入内容的典型请求之间应该有一些区别。


我想知道的

  1. 我怎样才能使<error-page>配置工作?
  2. Spring 自动重定向之间有什么区别?以及 Spring MVC 中用户操作的典型请求?

最佳答案

错误页面大小必须 > 1024 字节。
给你的错误页面添加一些无用的东西进行测试。
添加此以确保错误页面具有此属性:[isErrorPage="true"]

关于java - <error-page> 设置在 Spring MVC 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29245986/

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