首先,我已搜索并搜索了所有可能的解决方案,但似乎没有一个可行。 在与Spring集成angular 2时,页面重新加载时得到404。
我不希望切换到HashStrategy。
这是我的Initializer.java:
public void onStartup(ServletContext servletContext) throws ServletException {
System.out.println("IN Initializer : onStartup");
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.register(WebAppConfig.class);
servletContext.addListener(new ContextLoaderListener(context));
DispatcherServlet ds = new DispatcherServlet(context);
ds.setThrowExceptionIfNoHandlerFound(true);
Dynamic dispatcher = servletContext.addServlet("DispatcherServlet", ds);
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
}
这是我的AppConfig:
@Bean
public ViewResolver setupViewResolver() {
System.out.println(" --- WebAppConfig : ViewResolver ---");
UrlBasedViewResolver resolver = new UrlBasedViewResolver();
resolver.setPrefix("/");
resolver.setSuffix(".html");
resolver.setViewClass(JstlView.class);
return resolver;
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
System.out.println(" --- WebAppConfig : addViewControllers ---");
registry.addViewController("/").setViewName("index");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
System.out.println(" --- WebAppConfig : addResourceHandlers ---");
registry.addResourceHandler("/**").addResourceLocations("/");
}
我尝试通过以下方式用java处理它:(当我将Java与angularjs集成在一起并从URL中删除#!时,此方法有效)
@ControllerAdvice
@EnableWebMvc
public class StaticExceptionHandler {
@ExceptionHandler(NoHandlerFoundException.class)
public String handle404(Exception ex) {
System.out.println("inside NoHandlerFoundException");
return "index";
}
}
但是似乎没有任何效果。.请让我知道是否需要发布更多的代码段。
谢谢!