몇 가지 뷰가 설정된 스프링 부트 애플리케이션이 있습니다. 또한 Angular2 앱을 번들로 제공합니다. Angular2 애플리케이션을로드 할 때, 애플리케이션 내에서 루트 링크를 시도 할 때 스프링 MVC가 호출을 가로 채고 관련 뷰를 찾고 오류 페이지를 리턴하지 못한다.Spring Web MVC 애플리케이션에서 Angluar2 경로 제외
http://localhost:8080/index.html은 Angular2 응용 프로그램을로드 한 다음 URL을 단지 http://localhost:8080/으로 다시 작성합니다. 예를 들어 내가 원하는 경로를 탐색하면 http://localhost:8080/invite/12345이면 경로가로드되어 예상대로 작동합니다. http://localhost:8080/invite/12345을 치면 표준 Spring MVC 에러 페이지가 바로 리턴된다.
그러나 Angular2 응용 프로그램을 독립 실행 형 응용 프로그램 (스프링 부트로 제공하지 않음)로 실행하면 해당 링크를 직접 누르는 것이 예상대로 작동합니다. index.html을로드하고 경로를 실행하며 원하는 데이터를 보여줍니다.
Java 구성을 통해 Spring에 /invite/**
경로 (내 Angular2 응용 프로그램이 커지면서 다른 경로도 무시 됨)를 무시하면 내 Angular2 응용 프로그램 내의 경로로 딥 링크 할 수 있습니다.
@SpringBootApplication
@EnableResourceServer
public class AuthserverApplication extends WebMvcAutoConfigurationAdapter {
public static void main(String[] args) {
SpringApplication.run(AuthserverApplication.class, args);
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/login").setViewName("login");
registry.addViewController("/oauth/confirm_access").setViewName("authorize");
registry.addViewController("/success").setViewName("success");
}
@Bean
public ViewResolver getViewResolver() {
final InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setSuffix(".html");
return resolver;
}
}
이 프로젝트는 봄 부팅 1.3.3.RELEASE에서 상속 :
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.3.RELEASE</version>
</parent>
무시로 무엇을 의미합니까? 그렇다면 무엇이 돌아올 것입니까? 같은 결과 (페이지)를 반환하는 링크를 만드는 방법은 어떻습니까? – acdcjunior
@acdcjunior - 여전히 작동해야하는 스프링 웹 MVC 뷰가 여러 개 있지만 '/ invite/**'경로를 쳤을 때 그 경로는 실제로 번들 된 Angular 2 앱에 의해 제어되므로 경로는 Spring MVC에 의해 처리되지 않는다. – cocovan
Angular2 앱의 루트가'/ invite /'에 있다고 가정합니다. 그렇다면 해당 URL에 대한 요청은 angular2 앱이 포함 된보기를 반환합니다. 동의합니까? 그렇다면,'/ invite/** '에 대한 요청은 URL을 다시 작성하지 않고 동일한 뷰를 가리 키므로 각도가 정확히 어디인지를 알 수 있습니다. 어떻게 생각해? – acdcjunior