Приложение Spring 5 MVC Angular 5 выдает ошибку 404

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

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

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, "/*");
}
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
54
1

Ответы 1

Вам нужно проверить базовое свойство href.

<base href = "/src/main/webapp/">

Другие вопросы по теме