Spring 5 MVC Angular 5 App Throwing 404 Ошибка - PullRequest
0 голосов
/ 13 октября 2018

Я знаю, что этот вопрос задавался ранее, и я попробовал несколько решений, но не могу заставить это работать должным образом.Я использую Spring 5 MVC и угловое приложение, которое существует в /src/main/webapp/.

Приложение работает при доступе к базовому пути.Проблема возникает, когда мне нужно прыгнуть в маршрут в приложении.Когда страница пытается загрузить маршрут в URL, она выдает ошибку 404, потому что Spring не может найти обработчик ресурса для этого, но на самом деле я хочу просто перейти к index.html приложения, такого угловатогоможет справиться с этим.Я попытался переместить приложение в папку «app» в / src / main / webapp /, и вы можете увидеть обработчики ресурсов и просмотреть контроллеры, которые у меня есть ниже.Я использую чванство для этого приложения, что усложняет ситуацию.Буду признателен за любую помощь!

public class MvcConfiguration implements WebMvcConfigurer {...

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
    registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");   
    registry.addResourceHandler("/app/**").addResourceLocations("/app/");
}

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addRedirectViewController("/", "swagger-ui.html");
    registry.addViewController("/swagger").setViewName("redirect:/rest/swagger-ui.html");
    registry.addViewController("/app").setViewName("forward:/app/index.html");
}

И класс веб-инициализации ниже:

public class WebInitializer implements WebApplicationInitializer {

AnnotationConfigWebApplicationContext webApplicationContext = new AnnotationConfigWebApplicationContext();

@Override
public void onStartup(ServletContext container) {
    // Create the 'root' Spring application context
    AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
    rootContext.register(ApplicationConfiguration.class);

    // Manage the lifecycle of the root application context
    container.addListener(new ContextLoaderListener(rootContext));

    registerDispatcherServlet(container, MvcConfiguration.class, "/views/*", "/rest/*", "/swagger/*");

    container.addFilter("springSecurityFilterChain", new DelegatingFilterProxy("springSecurityFilterChain")).addMappingForUrlPatterns(null, false, "/*");

    CharacterEncodingFilter charEncodingFilter = new CharacterEncodingFilter();
    charEncodingFilter.setEncoding("UTF-8");
    container.addFilter("encoding-filter", charEncodingFilter).addMappingForUrlPatterns(null, false, "/*");

    container.addFilter("cors-filter", new CorsFilter()).addMappingForUrlPatterns(null, false, "/*");
}

1 Ответ

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

Вам необходимо проверить свойство base href.

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