【问题标题】:Spring Boot "No message available" error(status = 404),Spring Boot“无可用消息”错误(状态 = 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

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案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
          猜你喜欢
          • 2021-10-13
          • 1970-01-01
          • 1970-01-01
          • 2016-03-12
          • 2020-10-30
          • 2014-10-24
          • 2018-08-08
          • 1970-01-01
          • 2018-09-07
          相关资源
          最近更新 更多