来自 angular-ui-router 和 spring mvc 的请求映射

Posted

技术标签:

【中文标题】来自 angular-ui-router 和 spring mvc 的请求映射【英文标题】:Requestmapping from angular-ui-router and spring mvc 【发布时间】:2015-05-25 23:33:41 【问题描述】:

我使用 AngulaJS 作为 javascript 客户端,使用 spring mvc 作为 rest 后端。 在 AngulaJS 中,我使用的是 ui-router。

这里是 config.js 文件

function config($stateProvider, $urlRouterProvider) 
    $urlRouterProvider.otherwise("/index");
    $stateProvider
        .state('trains', 
            url: "/trains",
            templateUrl: "views/pages/trains.html",
            data: 
                pageTitle: 'Trains'
            
        )

下面是html文件(left-sliderbar.html

<li ui-sref-active="active">
    <a href="javascript:;" ui-sref="trains" title="the trains">Trains </a>
 </li> 

问题是当我点击左侧滑条中的“Trains”菜单时,我无法使用 Spring MVC 的 Rest Backend 中的方法获取请求映射。下面是 Spring MVC 控制器的代码

@RequestMapping("/trains")
    public String getTrainPartialPage(ModelMap modelMap) 
        System.out.println("---------Request Mapping: /trains: " + this.getClass());
        return "pages/trains";
    

请帮我解决,我想使用ui-router而不是ngRoute,谢谢

【问题讨论】:

【参考方案1】:
function config($stateProvider, $urlRouterProvider) 
$urlRouterProvider.otherwise("/index");
$stateProvider
    .state('trains', 
        url: "/trains",
        data: 
            pageTitle: 'Trains'
        ,views: 
                'content@': 
                    templateUrl: "views/pages/trains.html",
                    controller: 'TrainsController'
                
            
    )

您需要在您的服务或 TrainsController 中实现其余调用。

【讨论】:

谢谢你,很难向你解释。但我也在使用spring security,登录成功后重定向到main.html文件。这样我只得到主请求映射。 [代码] @RequestMapping("/main") public void getMainPage() System.out.println("Main Page");返回; [/code] 例如下面的 url 我只得到 main 的请求映射,而不是 trains。本地主机:8080/main#/trains【参考方案2】:

我在相同的上下文中遇到了同样的问题。

我认为您应该尝试在您的$stateProvider 提供程序中使用templateUrl: "views/pages/trains" 而不是templateUrl: "views/pages/trains.html"

后端控制器应该公开这个请求映射:

@RequestMapping(value = "/train")
public ModelAndView getMain() 
    return new ModelAndView("pages/train");

注意:使用ModelAndView 作为返回对象而不是String(没有使用String,实际上我不知道为什么)。

Angular UI Router 将在 url 中写入 /train,Spring 将提供映射到 /train 路由上的 html 文件。

希望能帮到你。

【讨论】:

以上是关于来自 angular-ui-router 和 spring mvc 的请求映射的主要内容,如果未能解决你的问题,请参考以下文章

使用 angular-ui-router 和 bootstrap $modal 创建一个多步骤向导

带有 Html5Mode 的 Angular-UI-Router 刷新页面问题

控制器内部的 angular-ui-router 函数不是函数

ngRoute (angular-route.js) 和 ui-router (angular-ui-router.js) 模块有什么不同呢?

ngRoute (angular-route.js) 和 ui-router (angular-ui-router.js) 模块有什么不同呢?

ngRoute (angular-route.js) 和 ui-router (angular-ui-router.js) 模块有什么不同呢?