【问题标题】:Cannot load view in spring boot无法在 Spring Boot 中加载视图
【发布时间】:2018-07-17 10:53:34
【问题描述】:

我已经尝试了几个小时,似乎无法解决这个问题。我有一个简单的 Spring Boot 应用程序。

这些是重要的文件:

DemoApplication.java

package com.whatever.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;

import com.whatever.config.ConfigurationSettings;

@SpringBootApplication
@ComponentScan(basePackages = {"com.whatever.controllers", "com.whatever.config"})

public class DemoApplication{
    public static void main(String[] args) {
        Class[] sources = {DemoApplication.class, ConfigurationSettings.class};

        SpringApplication.run(sources, args);

        System.out.println("Hello WORLD!");
    }
}

MainController.java

package com.whatever.controllers;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

@RestController
@RequestMapping("/")
public class MainController{

    @RequestMapping("/welcome")
    public ModelAndView welcome(){
        System.out.println("WELCOME!");

        ModelAndView mAndView = new ModelAndView();

        mAndView.setViewName("welcome");
        return mAndView;
    }
}

ConfigurationSettings.java

package com.whatever.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
public class ConfigurationSettings extends WebMvcConfigurationSupport{

    @Bean
    public InternalResourceViewResolver getResolver(){
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
}

我的项目结构:

--src
   --main
      --com.whatever.config
      --com.whatever.controllers
      --com.whatever.demo
   --webapp
      --WEB-INF
         welcome.jsp

但是,它无法加载 welcome.jsp 页面,我继续获取 /error 页面。 我似乎无法理解这个问题。 任何帮助表示赞赏。

P.S:我得到“Hello world!”和“欢迎!”控制台上的消息。所以,我知道控制到达那里。

StackTrace 说:

2018-07-17 16:40:19.869 DEBUG 11004 --- [-auto-13-exec-9] o.s.w.servlet.view.BeanNameViewResolver  : No matching bean found for view name 'welcome'
2018-07-17 16:40:19.869 DEBUG 11004 --- [-auto-13-exec-9] o.s.b.f.s.DefaultListableBeanFactory     : Invoking afterPropertiesSet() on bean with name 'welcome'
2018-07-17 16:40:19.869 DEBUG 11004 --- [-auto-13-exec-9] o.s.b.f.s.DefaultListableBeanFactory     : Returning cached instance of singleton bean 'org.springframework.transaction.config.internalTransactionAdvisor'
2018-07-17 16:40:19.869 DEBUG 11004 --- [-auto-13-exec-9] o.s.b.f.s.DefaultListableBeanFactory     : Returning cached instance of singleton bean 'org.springframework.transaction.config.internalTransactionAdvisor'
2018-07-17 16:40:19.870 DEBUG 11004 --- [-auto-13-exec-9] o.s.web.servlet.DispatcherServlet        : Rendering view [org.springframework.web.servlet.view.JstlView: name 'welcome'; URL [/WEB-INF/welcome.jsp]] in DispatcherServlet with name 'dispatcherServlet'
2018-07-17 16:40:19.871 DEBUG 11004 --- [-auto-13-exec-9] o.s.web.servlet.view.JstlView            : Forwarding to resource [/WEB-INF/welcome.jsp] in InternalResourceView 'welcome'
2018-07-17 16:40:19.872 DEBUG 11004 --- [-auto-13-exec-9] o.s.web.servlet.DispatcherServlet        : Successfully completed request
2018-07-17 16:40:19.875 DEBUG 11004 --- [-auto-13-exec-9] o.s.web.servlet.DispatcherServlet        : DispatcherServlet with name 'dispatcherServlet' processing GET request for [/error]
2018-07-17 16:40:19.875 DEBUG 11004 --- [-auto-13-exec-9] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Looking up handler method for path /error
2018-07-17 16:40:19.876 DEBUG 11004 --- [-auto-13-exec-9] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Did not find handler method for [/error]

【问题讨论】:

  • RestController 用于创建 web 服务。将其更改为控制器。
  • 不,它仍然产生同样的错误。
  • 您是否收到 404 错误?
  • 是的。白标错误页面。出现意外错误(类型=未找到,状态=404)。 /WEB-INF/welcome.jsp
  • 我添加了我的堆栈跟踪。请检查一下。

标签: java spring-mvc jsp spring-boot


【解决方案1】:

你在你的控制器代码中添加了@RestController,如果你想看到jsp页面,你需要删除它并更改为@Controller,因为@RestController将添加@ResponseBody到 你自动控制方法

package com.whatever.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;

import com.whatever.config.ConfigurationSettings;

@Controller("/")
public class MainController{

    @RequestMapping("/welcome")
    public ModelAndView welcome(){
        System.out.println("WELCOME!");

        ModelAndView mAndView = new ModelAndView();

        mAndView.setViewName("welcome");
        return mAndView;
    }
}

【讨论】:

  • 没有。还是一样的。它无法获取页面。不知道为什么。
  • 我添加了一个堆栈跟踪。一探究竟。谢谢
【解决方案2】:

你用过@RestController,不如用@Controller,它会解决你的问题

请尝试如下,

package com.whatever.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;

import com.whatever.config.ConfigurationSettings;

@Controller
public class MainController{

    @RequestMapping("/welcome")
    public String welcome(){
        System.out.println("WELCOME!");
        return "welcome";
    }
}

【讨论】:

  • 查看堆栈跟踪。
猜你喜欢
  • 2021-11-10
  • 2018-10-12
  • 1970-01-01
  • 2018-12-07
  • 1970-01-01
  • 1970-01-01
  • 2019-05-26
  • 2016-01-05
  • 2020-02-20
相关资源
最近更新 更多