You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular1.6 UI-Router与index.jsp路由失效问题求助

Hey there! 作为刚入坑AngularJS 1.6的新手,遇到ui-router路由跳不动的问题真的太常见了,我帮你梳理几个核心排查点,结合你的Spring MVC场景一步步排查:

1. 先确认ui-router的依赖没搞错

首先得保证你在index.jsp里正确引入了ui-router的JS文件,然后在你的Angular模块里必须注入ui.router,这一步错了后面全白搭:

// 注意是ui.router,不是uirouter或者其他拼写!
var app = angular.module('CM', ['ui.router']);

另外AngularJS 1.6和ui-router的版本要兼容,尽量用对应版本的ui-router(比如ui-router 0.4.2+适配AngularJS 1.6)。

2. 检查路由配置的细节

你的路由配置得符合AngularJS 1.6+ui-router的写法,重点盯这几个地方:

  • templateUrl的路径是否正确:如果login.html和index.jsp在同一目录,就写'login.html';如果在子目录(比如views/下),就得写'views/login.html',路径错了会直接404
  • 默认路由有没有设置:用$urlRouterProvider.otherwise()指定默认跳转的路径
  • 状态名称和URL是否匹配

给你个标准配置示例参考:

app.config(function($stateProvider, $urlRouterProvider) {
  // 没匹配到任何路由时,默认跳转到login
  $urlRouterProvider.otherwise('/login');

  $stateProvider
    .state('login', {
      url: '/login',
      templateUrl: 'login.html' // 这里路径一定要对应实际文件位置!
    });
});
3. 别漏了ui-view容器

ui-router需要一个挂载视图的“容器”,你必须在index.jsp的body里加上<div ui-view></div>,不然就算路由匹配成功了,login.html的内容也没地方渲染:

<body>
  <!-- 这个标签是核心!没有它路由内容根本显示不出来 -->
  <div ui-view></div>
</body>
4. 打开浏览器控制台看报错!

别光看资源加载了,打开浏览器F12的Console标签页,有没有红色报错?比如:

  • 提示$stateProvider is not defined:说明你没注入ui.router模块
  • 提示GET login.html 404:要么路径错了,要么Spring MVC拦截了静态文件
  • 提示Angular模块注入错误:检查模块名称拼写

这些报错直接告诉你问题出在哪!

5. 检查Spring MVC的静态资源配置

因为你用了Spring MVC,它默认会拦截所有请求,包括html静态文件,所以得在Spring的配置文件里加静态资源映射,让Spring放过这些文件:

<!-- 假设你的html、js、css都放在webapp/static目录下,按需调整路径 -->
<mvc:resources mapping="/**" location="/static/"/>

如果login.html不在静态资源目录里,Spring会把它当成Controller的请求去处理,自然返回404,路由肯定跳不动。

内容的提问来源于stack exchange,提问作者vicky9988

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:13:14