Spring Boot“无可用消息”错误(状态 = 404),
Posted
技术标签:
【中文标题】Spring Boot“无可用消息”错误(状态 = 404),【英文标题】:Spring Boot "No message available" error(status = 404), 【发布时间】:2016-11-07 10:16:29 【问题描述】:我正在使用带有嵌入式 Tomcat 的 Spring Boot。 当它启动时,它会登录到控制台:
s.w.s.m.m.a.RequestMappingHandlerMapping : 将“[/home]”映射到公共 java.lang.String com.vlad.pet.contactlist.webapp.controller.SampleController.helloWorld(org.springframework.ui.Model)
所以我猜 URL 被映射到控制器。 但是http://localhost:8090/home 给了我一个错误 404。
出现意外错误(类型=未找到,状态=404)。 没有可用的消息
Application.java
@SpringBootApplication
public class Application extends SpringBootServletInitializer
public static void main(final String[] args)
SpringApplication.run(Application.class, args);
//overrides the configure() method to point to itself, so Spring can find the main configuration.
@Override
protected final SpringApplicationBuilder configure(final SpringApplicationBuilder application)
return application.sources(Application.class);
@Bean
public ViewResolver getViewResolver()
final TilesViewResolver resolver = new TilesViewResolver();
resolver.setViewClass(TilesView.class);
return resolver;
@Bean
public TilesConfigurer getTilesConfigurer()
final TilesConfigurer configurer = new TilesConfigurer();
configurer.setDefinitions("WEB-INF/tiles/tiles.xml");
configurer.setCheckRefresh(true);
return configurer;
SampleController.java
@Controller
public class SampleController
@RequestMapping (value = "/home")
public String helloWorld(Model model)
model.addAttribute("pageTitle", "home");
return "base";
tiles.xml
<tiles-definitions>
<definition name="base" template="/WEB-INF/tiles/basic/basic-template.jsp">
<put-attribute name="head" value="/WEB-INF/tiles/basic/head.jsp" />
</definition>
</tiles-definitions>
My project structure
【问题讨论】:
【参考方案1】:就我而言,我的 Eclipse 项目显示错误。我必须从 Eclipse 安装 mvn,更新 Maven 依赖项,然后从 Eclipse 启动服务器。
【讨论】:
【参考方案2】:您可以使用@RestController
代替@Controller
。
@RestController
public class SampleController
...
【讨论】:
【参考方案3】:我通过启用默认 servlet 解决了这个问题:
@Configuration
@EnableWebMvc
public class Config extends WebMvcConfigurerAdapter
@Override
public void configureDefaultServletHandling(
DefaultServletHandlerConfigurer configurer)
configurer.enable();
来源:Configure ViewResolver with Spring Boot and annotations gives No mapping found for HTTP request with URI error
【讨论】:
【参考方案4】:您正在从您的控制器方法返回“家”,但我没有在您的项目结构中看到 home.jsp。
【讨论】:
抱歉,打错了,现已编辑。控制器返回“base”,定义为tiles定义 您是否更改了 application.properties 上的服务器端口?默认值为 8080。因此,如果您没有更改它,则 URL 将是 - localhost:8080/home 在 application.properties: server.port=8090以上是关于Spring Boot“无可用消息”错误(状态 = 404),的主要内容,如果未能解决你的问题,请参考以下文章
Spring @RestController,spring-boot 出现意外错误(类型=不可接受,状态=406)
为啥我在运行简单的 Spring Boot 应用程序时总是得到状态为“404”的 Whitelabel 错误页面
无法使用spring boot错误HTTP状态404连接mysql数据库请求的资源不可用