如何启用从JSF页面到特定Angular页面的导航?

时间:2019-06-07 20:09:01

标签: angular jsf

我正在开发一个项目,该项目的客户端是在JSF上编写的,后端是在Wildfly上运行的Java EE编写的。 团队正在考虑迁移到Angular。 方法是在Angular上编写新页面,然后慢慢替换旧的JSF页面。

如何启用从JSF页面到特定Angular页面的导航?

1 个答案:

答案 0 :(得分:1)

  

我想知道是否在Angular上编写新页面并同时运行它们   在相同的背景下,当前的JSF客户端很有意义,如果可以,那么   你会那样做吗?

只要您的后端服务是由某种托管bean(cdi,jsf等)构成的,那么通过它的所有途径都将经过一些棘手的路径,除了它还会花费比您预期更多的精力。

如果您在后端提供了全面的服务,则“在Angular编写新页面并在当前引擎盖下与当前JSF客户端一起运行它们” 将很有意义,并且所需要的只是一些重定向配置在jsf端为特定页面提供服务,以服务您的角度应用程序或使用哈希定位策略。 实施这种情况并不复杂。 步骤基本上是这样的:

  • 使用与您的上下文路径相同的上下文路径构建角度项目 jsf context-path以及您的角度文件夹的名称,如下所示:

    ng build --prod --base-href“ / myjsfapp / angular /” --deploy-url“ / myjsfapp / angular /”

  • 在jsf webapp文件夹中创建一个名为angular的文件夹,并将其角度分布文件放入其中。

完成上述步骤后,您的angular应用程序将在/context-path/angular/index.html路径下提供。

但是,访问角度页面将需要更多注意。由于角度应用程序大约只有一页(index.html),因此所有页面实际上都是在运行时在同一index.html中提供的逻辑页面。因此,当您尝试访问其中一个页面时,可以说用户页面,在您的角度应用程序内部,服务器将启动并搜索物理/users.html页面并返回http404。要处理此问题,您可以设置重定向规则或者选择最简单的方法是哈希定位策略。通过在forRoot调用中添加{useHash:true}配置,可以轻松地在角度应用程序中使用哈希定位策略。 (如果您采用这种策略,这应该是第一步)

@NgModule({
  imports: [ RouterModule.forRoot(routes, {useHash: true})],
  ...
})

使用哈希定位策略,您可以使用哈希网址访问角度页面。 例如,http://localhost:8080/myjsfapp/angular/index.html#users