如何在Angular Universal for Java中处理路由参数

时间:2018-02-28 17:06:08

标签: java angular spring-mvc spring-boot angular-universal

我正在使用Angular Universal for Java(See the project here)开发一个带有服务器端渲染的Angular 5应用程序。我有一个参数化的路由在Angular中定义为/person/:personId,这在浏览器中呈现时效果很好,但在服务器上却没有。

在我的spring-mvc控制器中我有

@GetMapping({"/"})
public ModelAndView showHome() {
    return new ModelAndView("/");
}

@GetMapping({"/person/{personId}"})
public ModelAndView showFeedbackDetail(HttpServletRequest request, 
   @PathVariable("person") String personId) {
    return new ModelAndView("/person/:personId");
}

在我的application.properties中:

# Define all application routes
angularjuniversal.routes=/,/person/:personId

# point to the SPA index.html page
angularjuniversal.indexResourcePath=/static/index.html

# point to the server application
angularjuniversal.serverBundleResourcePath=/server.js

我不确定如何将{personId}参数传递给Angular进行渲染。

静态定义的路线可以正常工作。

1 个答案:

答案 0 :(得分:0)

我已经回答了我自己的问题here

简而言之,似乎0.0.2的angularj-universal库不支持参数化路由。看起来它将在即将发布的版本中修复。这可以通过复制AngularJUniversalViewAngularJUniversalViewResolver的最新实现并使用复制的AngularJUniversalViewResolver实现覆盖当前在spring上下文中的ViewResolver来同时修复。