Spring MVC предотвращает изменение URL при возврате статического HTML - PullRequest
0 голосов
/ 04 декабря 2018

У меня Spring MVC + угловое приложение.Задача SpringMVC только для «просмотра» состоит в том, чтобы перенаправить на Angular index.html страницу, которая находится в папке resources / static.

Это работает, и когда я вызываю url localhost /, мои угловые приложения появляются.Проблема в том, что URL в браузере меняется на localhost / static / static, и я хотел бы предотвратить это.

Я пробовал многочисленные методы, описанные здесь, но ничего не работает.

AppController

@Controller
public class AppController {

    @GetMapping("/")
    public String test(HttpServletResponse response) throws IOException {
        return "forward:/static/index.html";
}

Я пробовал разные комбинации добавления / удаления ключевых слов и путей вперед

MvcConfiguration

@Configuration
@EnableWebMvc
public class MvcConfiguration implements WebMvcConfigurer{

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("static/**").addResourceLocations("static/");
    }

/*
    @Bean
    public ViewResolver getViewResolver(){
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/");
        resolver.setSuffix(".html");
        return resolver;
    }
*/
/*
    @Override
    public void addViewControllers(ViewControllerRegistry registry){
        registry.addViewController("/").setViewName("forward:/static/index.html");
    }
*/
/*
    @Bean
    public InternalResourceViewResolver internalResourceViewResolver() {
        InternalResourceViewResolver internalResourceViewResolver = new InternalResourceViewResolver();
        internalResourceViewResolver.setPrefix("/static/");
        internalResourceViewResolver.setSuffix("*.html");
        internalResourceViewResolver.set
        return internalResourceViewResolver;
    }
*/

/*
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedMethods("HEAD", "GET", "PUT", "POST", "DELETE", "PATCH");
    }
*/

}

Закомментированные части кода являются предыдущимиметоды, которые я пробовал.

Index.html

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Ui</title>
  <base href="static/">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="stylesheet" href="styles.3ff695c00d717f2d2a11.css"></head>
<body>
  <app-root></app-root>
<script type="text/javascript" src="runtime.ec2944dd8b20ec099bf3.js"></script><script type="text/javascript" src="polyfills.66a2e3e0a1f871fa391a.js"></script><script type="text/javascript" src="main.8673ca52f204ca8863f2.js"></script></body>
</html>

Спасибо за любой совет.

1 Ответ

0 голосов
/ 06 декабря 2018

Проблема была в сочетании resourceHandler и настроек.Правильная конфигурация:

public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/**").addResourceLocations("static/");
}

и

enter <base href="./">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...