Я знаю, что этот вопрос задавался раньше, и я пробовал несколько решений, но не могу заставить его работать должным образом. Я использую 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, "/*");
}





Вам нужно проверить базовое свойство href.
<base href = "/src/main/webapp/">