angularjs ui-router controller如何从java后端重定向中读取参数?

时间:2017-04-21 02:55:24

标签: java angularjs angular-ui-router

路线定义如下:

.state('about', {
            url: '/about',
            controller: 'AboutCtrl',
            templateUrl: 'views/about/about.html'
        })

Java后端:

servletResponse.setHeader("type", "something");
servletResponse.sendRedirect("http://xxxxx/yyyy/#!/about");

那么如何在AboutCtrl中获取“type”参数?

1 个答案:

答案 0 :(得分:1)

我对如何使用servletResponse了解不多,但是从setHeader方法的名称,您尝试设置标头值,而不是参数值。

有几种方法可以使用ui-router来解析参数(我假设您正在使用ui-router)。您可以查看此link以获取更多详情,但以下是一些方法:

如果您决定使用servletResponse.sendRedirect("http://xxxxx/yyyy/#!/about/something");,可以执行以下操作:

.state('about', {
   url: '/about/:type', //or even url: '/about/{type}'
   controller: 'AboutCtrl',
   templateUrl: 'views/about/about.html'
});

function AboutCtrl($stateParams){
   console.log($stateParams.type); //something
}

如果您想使用查询参数servletResponse.sendRedirect("http://xxxxx/yyyy/#!/about?type=something");,则应将州的网址与url: '/about?type'相匹配。

如果您想使用参数而不在州url中定义参数,则可以执行以下操作:

.state('about', {
   url: '/about/',
   params: {
        type: null
    },
   controller: 'AboutCtrl',
   templateUrl: 'views/about/about.html'
});

function AboutCtrl($stateParams){
   console.log($stateParams.type); //something
}

您可以在提供的链接中找到更多详细信息和变体。