【问题标题】:Spring boot jsp not resolvingSpring Boot jsp无法解析
【发布时间】:2018-02-10 16:32:20
【问题描述】:

我有一个工作启动 MVC 应用程序,我需要将 jsp 视图添加到。

我已经添加了所有需要的 jars

<dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jdt.core.compiler</groupId>
        <artifactId>ecj</artifactId>
        <version>4.6.1</version>
    </dependency>

我在 application.yml 中的视图配置

spring:
 mvc:
view:
  prefix: /WEB-INF/jsp/
  suffix: .jsp

将我的jsp添加到src/main/webapp/WEB-INF

我的控制器

@Controller
public class PreAuthController {

@RequestMapping( value="/" , method = RequestMethod.GET  )
public String index(){
    return "dashboard";
}

@RequestMapping( value="/dashboard" , method = RequestMethod.GET  )
public String dashboard(){
    return "dashboard";
}

@RequestMapping( value="/login" , method = RequestMethod.GET  )
    public String login(){
        return "login";
}

}

日志显示正确的 docroot

文档根目录:/Users/myhome/workspace/wi-preauth/wi-preauth-ui/src/main/webapp

当我尝试点击http://localhost:8080/

我不断收到此错误

Could not resolve view with name 'login' in servlet with name 
'dispatcherServlet'

我已经尝试了论坛上提出的其他问题,但无济于事..

非常感谢任何帮助。

【问题讨论】:

    标签: jsp spring-mvc spring-boot


    【解决方案1】:

    我发现了我的问题。我有一个扩展 WebMvcConfigurationSupport 的配置类。这反过来会禁用 WebMvcAutoConfiguration。 所以我不得不添加我自己的

    @Bean
      public UrlBasedViewResolver viewResolver() {
      UrlBasedViewResolver resolver
        = new UrlBasedViewResolver();
      resolver.setPrefix("/WEB-INF/jsp/");
      resolver.setSuffix(".jsp");
      resolver.setViewClass(JstlView.class);
      return resolver;
     }
    

    在我的配置中。

    【讨论】:

      【解决方案2】:

      创建ApplicationContext java配置类。

      ResourceHandlerRegistry 位置有助于注册路径以加载 JSP 中的 css、图像、字体和 js 文件等静态文件。

      @Configuration
      @EnableWebMvc
      @ComponentScan
      public class ApplicationContext extends WebMvcConfigurerAdapter
      {
          @Override
          public void configureViewResolvers(ViewResolverRegistry registry) {
              InternalResourceViewResolver resolver = new InternalResourceViewResolver();
              resolver.setPrefix("/WEB-INF/view/");
              resolver.setSuffix(".jsp");
              resolver.setViewClass(JstlView.class);
              registry.viewResolver(resolver);
          }
          private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
                  "classpath:/META-INF/resources/", "classpath:/resources/",
                  "classpath:/static/", "classpath:/public/" };
          @Override
          public void addResourceHandlers(ResourceHandlerRegistry registry) {
              if (!registry.hasMappingForPattern("/webjars/**")) {
                  registry.addResourceHandler("/webjars/**").addResourceLocations(
                          "classpath:/META-INF/resources/webjars/");
              }
              if (!registry.hasMappingForPattern("/**")) {
                  registry.addResourceHandler("/**").addResourceLocations(
                          CLASSPATH_RESOURCE_LOCATIONS);
              }
          }
      
      
      }
      

      【讨论】:

        猜你喜欢
        • 2014-08-27
        • 2019-08-14
        • 1970-01-01
        • 2020-10-22
        • 1970-01-01
        • 1970-01-01
        • 2017-08-11
        • 2019-06-11
        • 2019-08-31
        相关资源
        最近更新 更多