Добавление JSF-зависимостей в Spring Boot предотвращает чтение статических ресурсов из файловой системы - PullRequest
0 голосов
/ 02 сентября 2018

Это моя структура проекта (MWE):

.
├── build.gradle
└── src
    ├── main
    │   └── java
    │       └── af
    │           └── aps
    │               ├── Application.java
    │               └── config
    │                   └── MVCConfig.java
    └── public
        └── index.html

build.gradle

ext.appVersion = '0.0.1'

buildscript {
    ext.springBootVersion = '2.0.4.RELEASE'
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'war'

repositories {
    mavenCentral()
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    compile('org.springframework.boot:spring-boot-starter-web') // mvc

    // compile group: 'com.sun.faces', name: 'jsf-api', version: '2.2.18'
    // compile group: 'com.sun.faces', name: 'jsf-impl', version: '2.2.18'
}

Application.java

package app;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class Application extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(Application.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

MVCConfig.java

package app.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class MVCConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**")
                .addResourceLocations("file:/home/hamid/workspace/java/app/src/public/")
                .setCachePeriod(0);
    }
}

index.html

<!DOCTYPE html>
<html>
<head>
    <title>Home page</title>
</head>
<body>The home page</body>
</html>

Я пытаюсь обслуживать статические ресурсы из файловой системы. Это работает. Я вижу домашнюю страницу, и когда я изменяю ее и обновляю браузер, я вижу изменения, но когда я добавляю библиотеки JSF в свой проект, я получаю ошибку 404, что статические ресурсы не могут быть найдены. Я гуглил все, что мог, и искал документы, но не могу понять, что не так.

1 Ответ

0 голосов
/ 17 октября 2018

Папка src/public не находится в пути к классам, поэтому ее содержимое не может быть обработано с помощью весенней загрузки.

Просто переместите src/public на src/main/resources/public и все должно работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...