Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从SpringWebMVC应用程序中排除Angluar2路由_Java_Spring_Spring Mvc_Angular_Spring Boot - Fatal编程技术网

Java 从SpringWebMVC应用程序中排除Angluar2路由

Java 从SpringWebMVC应用程序中排除Angluar2路由,java,spring,spring-mvc,angular,spring-boot,Java,Spring,Spring Mvc,Angular,Spring Boot,我有一个spring启动应用程序,它设置了一些视图。我还捆绑了一个Angular2应用程序。当我加载Angular2应用程序时,一切正常。然而,当我尝试深度链接到应用程序内的路由时,Spring MVC正在拦截呼叫,无法找到相关视图并返回错误页面 将加载Angular2应用程序,该应用程序然后重新写入URL以使其正确。如果我随后导航到我想要的路线(例如),则路线将按预期加载和工作。直接点击返回标准Spring MVC错误页面 但是,如果我将Angular2应用程序作为一个独立的应用程序运行(sp

我有一个spring启动应用程序,它设置了一些视图。我还捆绑了一个Angular2应用程序。当我加载Angular2应用程序时,一切正常。然而,当我尝试深度链接到应用程序内的路由时,Spring MVC正在拦截呼叫,无法找到相关视图并返回错误页面

将加载Angular2应用程序,该应用程序然后重新写入URL以使其正确。如果我随后导航到我想要的路线(例如),则路线将按预期加载和工作。直接点击返回标准Spring MVC错误页面

但是,如果我将Angular2应用程序作为一个独立的应用程序运行(spring boot没有提供),那么直接点击该链接就可以正常工作。它加载index.html,启动路由并显示所需的数据

我如何通过Java配置告诉Spring忽略
/invite/**
路径(以及随着Angular2应用程序的增长而增加的其他路径),以便在Angular2应用程序中深入链接到路由。以下是当前的Java配置:

@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;
    }
}
此项目继承自spring boot 1.3.3.0版本:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.3.RELEASE</version>
</parent>

org.springframework.boot
spring启动程序父级
1.3.3.1发布

因此,我最终解决这个问题的方法是直接链接到index.html页面,从而强制angular2应用程序加载,例如:


根据你的回答,我像这样配置,效果很好

@RequestMapping(value = "/*", method = RequestMethod.GET)
@Override
public String index()
{
    return "index";
}

@Override
@RequestMapping(value = "/login/*", method = RequestMethod.GET)
public String login()
{
    return "redirect:/#/login";
}

因此,我们可以访问localhost:8080/angular app/login/而不会出现404错误。

忽略是什么意思?那么,它会返回什么呢?让所有链接返回相同的结果(第页)怎么样?@acdcjunior-我配置了许多SpringWebMVC视图,它们仍然需要工作,但是当我点击
/invite/**
路径时,该路径实际上由捆绑的Angular2应用程序控制,因此我希望该路径不由Spring MVC处理。假设Angular2应用程序的根位于
/invite/
。如果是这样,那么对该URL的请求将返回一个包含angular2应用程序的视图,您同意吗?如果是这种情况,只需向
/invite/**
发出任何指向同一视图的请求(无需重写URL,以便angular知道它确切的位置)。你怎么认为?